У меня есть всплывающая подсказка, и я хочу, чтобы она отображала более подробную информацию, если нажата / удерживается клавиша SHIFT. Следующий код пока работает:
function myAddonFrame_OnEnter(self)
myAddon_GenerateTooltip(self)
end
function myAddonFrame_OnLeave(self)
GameTooltip:Hide()
end
function myAddon_GenerateTooltip(self)
GameTooltip:SetOwner(self or UIParent, "ANCHOR_LEFT")
GameTooltip:SetText(“myAddon”, 0.7, 0, 1)
GameTooltip:AddLine(" ", 1, 1, 1)
if IsShiftKeyDown() then
-- Show some more details, if the SHIFT key is pressed.
GameTooltip:AddLine(“Some detailed stuff about god and the world.”, 1, 1, 1)
GameTooltip:AddLine(“Even more great stuff to read.”, 0.9, 0.8, 0.1, 1)
else
-- Basic information to be displayed when no button is pressed.
GameTooltip:AddLine(“Some basic information. Yaaay!“, 1, 1, 1)
GameTooltip:AddLine(" ", 1, 1, 1)
GameTooltip:AddLine(“Hold SHIFT for more information…”, 0.5, 0.5, 0.5)
end
GameTooltip:Show()
end
Но это работает только в том случае, если клавиша SHIFT удерживается до того, как указатель мыши наведет курсор на myAddonFrame. Он также будет отображать подробную информацию даже после отпускания SHIFT, пока курсор мыши остается на myAddonFrame. Но хочется динамичности!
У меня такой вопрос:
Как сделать так, чтобы всплывающая подсказка обновлялась в соответствии с клавишей SHIFT, когда курсор мыши остается в кадре?
Я имею в виду что-то вроде того, что я нахожу над предметом в WoW, и только пока я удерживаю клавишу SHIFT, этот предмет будет сравниваться с тем, что я ношу сейчас. Мне нужен именно такой эффект, только в той же подсказке.
Я надеюсь, что кто-нибудь сможет подтолкнуть меня в правильном направлении. Я пробовал использовать MODIFIER_STATE_CHANGED, но у меня ничего не получилось.
Да, и пока мы говорим об инструментах ... вот бонусный вопрос:
Можно ли их немного отформатировать? Жирный шрифт, курсив, размер шрифта, изменение цвета для одного слова в строке и т. Д.? Я не нашел ничего особенного здесь (wowprogramming.com), но, возможно, я это не заметил.
--- РЕШЕНО ---
Для тех, кто заинтересован в решении:
Я использовал фрагмент кода Натаниэля и немного его скорректировал. Поскольку я использую один XML-файл для всех фреймов и один соответствующий LUA-файл только для функций, я не хотел создавать там новый фрейм. Но я нашел способ использовать существующий myAddonFrame
и для динамической всплывающей подсказки.
Мой приведенный выше код работает отлично, и мне просто пришлось добавить следующее:
-- [ALL THE CODE ABOVE!]
function myAddonFrame_OnLoad(frame)
frame:RegisterEvent("MODIFIER_STATE_CHANGED") -- Needed for the dynamic tool tip.
end
function myAddonFrame_OnEvent(frame, event, ...)
-- Fired, when any keyboard key is pressed.
local key, state = select(1, ...)
if (event == "MODIFIER_STATE_CHANGED") then
-- Switch the dynamic tooltip when the SHIFT key is held.
if myAddonFrame:IsMouseOver() and ((key == "LSHIFT") or (key == "RSHIFT")) then
myAddon_GenerateTooltip(frame)
end
end
end
Вот и все! Спасибо Натаниэлю за пищу для размышлений. :)