魔兽界面插件 - 隐藏和显示按钮

时间:2014-10-25 08:40:22

标签: button interface lua add-on world-of-warcraft

我在为“魔兽世界”编写一个简单的界面插件时遇到了一些问题。 我正在努力实现以下目标:如果我的一个法术没有冷却时间,我想显示一个按钮。如果我单击该按钮,则该法术应该施放,并且该按钮应该在冷却时间内隐藏。

演员阵容工作正常,但我有隐藏按钮的问题。点击后,我总是在聊天中收到错误消息。这是我的代码:

TestAddon.toc

## Interface: 60000
## Title: TestAddon
## Notes: Test
## Version: 1.0
TestAddon.lua

TestAddon.lua

btn_schutz = CreateFrame("Button", "MyButton", UIParent, "SecureActionButtonTemplate");
btn_schutz:ClearAllPoints();
btn_schutz:SetAttribute("type", "spell");
btn_schutz:SetAttribute("spell", "Schutz"); -- Schutz is name of spell (German)
btn_schutz:SetAttribute("unit", "player");
btn_schutz:SetPoint("CENTER", 0, 0);
btn_schutz:SetNormalTexture("Interface\\Icons\\ability_monk_guard");
btn_schutz:SetSize(48, 48);
btn_schutz:SetScript("OnUpdate", onUpdate);
btn_schutz:Show();

function onUpdate()
    local schutz_id = 115295;
    if GetSpellCooldown(schutz_id) == 0 then
        btn_schutz:Show(); -- causes error message
    else
        btn_schutz:Hide(); -- causes error message
    end
end

1 个答案:

答案 0 :(得分:2)

看起来你得到了一个标准的污点错误。在此处阅读更多相关信息:Secure Execution and Tainting

当角色处于战斗状态时,您无法显示或隐藏按钮(或任何"安全"框架)。