gpt4 book ai didi

lua - WoW 插件 - 按下按键时的动态工具提示

转载 作者:行者123 更新时间:2023-12-04 17:55:55 25 4
gpt4 key购买 nike

我有一个工具提示,我希望它在按下/按住 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但我没有让它工作。

哦,当我们在谈论工具时......这是一个额外的问题:
可以稍微格式化一下吗?粗体、斜体、字体大小、一行中单个单词的颜色变化等。 ?我没有发现任何特别的东西 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

就是这样!感谢 Nathanyel 提供的启发。 :)

最佳答案

该事件确实是关键,但由于您需要将它注册到一个框架,最好是受代码影响的框架,您应该为您的工具提示使用一个新框架:

local myFrame = CreateFrame("GameTooltip","myFrame",UIParent,"GameTooltipTemplate")

myFrame:SetScript("OnEvent",function(self, event, arg, ...)
if myFrame:IsShown()
and event == "MODIFIER_STATE_CHANGED"
and (arg = "LSHIFT" or arg = "RSHIFT") then
myAddon_GenerateTooltip() -- might need a parameter
end
end

myFrame:RegisterEvent("MODIFIER_STATE_CHANGED")

这只是在按下任一 Shift 键时重新填充工具提示,并且您的函数可以对键的新状态使用react。
餐巾纸代码,从我使用此方法的插件中删除一些复制和粘贴,因此它可能不完美,但足以传达概念。

关于lua - WoW 插件 - 按下按键时的动态工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40423367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com