【问题标题】:WoW Addon (Lua) Variables and methodsWoW Addon (Lua) 变量和方法
【发布时间】:2013-03-14 09:12:11
【问题描述】:

我已经搞砸了几个小时,我似乎无法让它工作

for i=1, 10 do
 local frame = "MyFrame"..i

 frame:EnableMouseWheel(true)
end

我得到的错误是

尝试调用方法“EnableMouseWheel”(零值)

如果我这样做了

MyFrame1:EnableMouseWheel(true)

没有任何问题,而且有效

到底有没有使用变量作为方法的框架名称?

【问题讨论】:

  • 对不起,我忘了添加这不是针对 5.x 客户端的,从那时起可能已经发生了变化。这是魔兽世界补丁2.4.3

标签: lua


【解决方案1】:

这将起作用:

local vars = getfenv()
for i=1, 10 do
    local frame = "MyFrame"..i

    vars[frame]:EnableMouseWheel(true)
end

尽管您似乎正在寻找错误问题的解决方案。为什么不将它们存储在一个数组中呢?

【讨论】:

    【解决方案2】:

    如果要将字符串名称转换为变量名称,则需要以表的形式访问全局对象:

    _G["MyFrame1"]
    

    我不知道 Lua 魔兽使用的是什么版本。如果它是一个没有 _G 的非常旧的版本,那么您可能需要改用 getglobal 函数

    getglobal("MyFrame1")
    

    也就是说,这通常是一种反模式。如果您是最初定义 MyFrame 变量的人,通常最好使用数组来代替:

    Myframes = {
       MyFrame1,
       MyFrame2,
    }
    

    因为这样可以避免字符串操作

    local frame = MyFrames[i]
    frame:EnableMouseWheel(true)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多