У меня есть всплывающая подсказка, и я хочу, чтобы она отображала более подробную информацию, если клавиша SHIFT нажата/удерживается. Следующий код работает до сих пор:WoW Addon - динамическая подсказка при нажатии клавиши
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, но я не работал.
О, и в то время как мы говорим о toolips ... вот бонус вопрос:
Можно ли отформатировать их немного? Жирный шрифт, курсив, шрифт, цветовые вариации для одного слова в строке и т. Д.? Я не нашел ничего конкретного here (wowprogramming.com), но, возможно, я его не замечал.
--- решаемая ---
Для тех, заинтересованных в решении:
Я использовал фрагмент кода Nathanyel и отрегулировать его немного. Поскольку я использую один файл 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
Вот оно! Спасибо Натаньелю за пищу для размышлений. :)
При попытке попробовать MODIFIER_STATE_CHANGED я всегда использовал один и тот же фрейм (действительно, этот аддон теперь состоит только из одного кадра). Возможно, это была проблема все время. Сегодня вечером я попробую ваш подход и расскажу вам о моих результатах. Спасибо, сейчас! :) – nehegeb
Ну, это действительно помогло! Я включил окончательное решение в вышеизложенный вопрос. Еще раз спасибо! – nehegeb