OnLoad 函数中的 self nil

问题描述 投票:0回答:1
xml lua add-on world-of-warcraft
1个回答
0
投票

您在

OnLoad
事件期间遇到的 self 为零的问题是《魔兽世界》UI 脚本中的一个常见问题,尤其是对于自定义框架。这种情况通常会发生,因为当
OnLoad
脚本被触发时,对 self 的引用不会按照您期望的方式自动传递,特别是当它是自定义框架或按钮时。

原因如下:

在 WoW 中,当您将

self
事件与
OnLoad
frame
结合使用时,
button
参数通常由系统自动传入。但是,如果在
OnLoad
内处理
XML
事件,则当事件触发时,
frame
可能尚未完全初始化,或者
XML
设置可能无法正确链接到 Lua 函数。

根本原因

OnLoad
事件通常在框架加载时触发,但在某些情况下(取决于上下文), self 可能不会按预期引用框架。

直接在Lua中引用框架

如果你不想改变

XML
,你可以修改Lua函数来直接获取框架的引用,即使self是nil。您可以通过在
frame
函数中按名称引用
MyAddonName_OnLoad
来实现此目的。

修复:

local frame = self or MyAddonName  -- Fallback to MyAddonName if self is nil
© www.soinside.com 2019 - 2024. All rights reserved.