【问题标题】:LUA - OnUpdate shift modifierLUA - OnUpdate 移位修饰符
【发布时间】:2014-10-03 22:33:36
【问题描述】:

我正在修改一个用 Lua 编写的魔兽世界插件。 有一个简单的布尔变量,它确定是显示某些“所有”帧还是仅显示特定帧。

所以当 = true 时它只会显示特定的帧 当 = false 时,它​​将显示所有帧

我想用 shift 键制作一个修饰符,以便在按下 shift 键时显示所有帧,并在重新释放 shift 时再次隐藏它们。

if IsShiftKeyDown() then
    cfg.aura.onlyShowPlayer = false
else
    cfg.aura.onlyShowPlayer = true
end

这是我非常简单的解决方案。这里的问题是虽然它只适用于脚本的启动。你会在 WoW 中看到每次加载界面时,如果没有另行通知,它将运行脚本。这不是很有效,因为我会将我的用户发送到加载屏幕。

OnUpdate 应该在这里解决我的问题,它将在每次渲染帧时运行此特定代码,这非常方便并且是我想要完成的。

这就是我做的

local function onUpdate(self,elapsed)
   if IsShiftKeyDown() then
     cfg.aura.onlyShowPlayer = false
   else
     cfg.aura.onlyShowPlayer = true
   end 
end

local shiftdebuffs = CreateFrame("frame")
shiftdebuffs:SetScript("OnUpdate", onUpdate)

我现在的问题是它不起作用。我是 onUpdate 的新手,只从我做的另一个插件复制粘贴它,效果很好。 是的,它直接变为 = false,我认为这只会发生,因为它是默认值。

感谢您的帮助

【问题讨论】:

    标签: lua shift modifier


    【解决方案1】:

    是的,它直接变为 = false,我认为这只会发生,因为它是默认值。

    不,if 语句中没有“默认”分支。要使控件到达then 分支,必须将条件评估为true。您需要检查逻辑,但如果脚本执行cfg.aura.onlyShowPlayer = false,则意味着IsShiftKeyDown() 被评估为true

    【讨论】:

    • 我没有告诉你脚本的其余部分,所以是的,它确实是默认的。因为它检查 cfg.aura.onlyShowPlayer 是否为真/假,并且还有另一个 if / else 动作正在进行。就像我说的,我只是在编辑这个插件,所以我不想直接更改。
    猜你喜欢
    • 2013-02-13
    • 1970-01-01
    • 2021-12-24
    • 2018-07-12
    • 2011-08-15
    • 2021-11-06
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多