我有一个工具提示,如果按下/按住 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
但这只有在鼠标悬停在 myAddonFrame 之前按住 SHIFT 键才有效。只要鼠标光标停留在 myAddonFrame 上,它也会在释放 SHIFT 后显示详细信息。但我希望它是动态的!
我的问题是:
当鼠标光标停留在框架上时,如何使工具提示根据 SHIFT 键自行刷新?
我想到了一些事情,比如当我将鼠标悬停在 WoW 中的一件物品上时,只要我按住 SHIFT 键,该物品就会与我目前穿着的物品进行比较。我想要这种效果,就在同一个工具提示中。
我希望有人能把我推向正确的方向。我曾尝试使用MODIFIER_STATE_CHANGED但我没有让它工作。
哦,当我们谈论工具时......这里有一个额外的问题:
是否可以对它们进行一些格式化?粗体、斜体、字体大小、一行中单个单词的颜色变化等。 ? 我在这里(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
而已!感谢 Nathanyel 的思考。:)