我已经搞砸了几个小时,我似乎无法让它工作
for i=1, 10 do
local frame = "MyFrame"..i
frame:EnableMouseWheel(true)
end
我得到的错误是
尝试调用方法“EnableMouseWheel”(零值)
但如果我这样做
MyFrame1:EnableMouseWheel(true)
从来没有问题,它可以工作
无论如何使用变量作为方法的框架名称?
我已经搞砸了几个小时,我似乎无法让它工作
for i=1, 10 do
local frame = "MyFrame"..i
frame:EnableMouseWheel(true)
end
我得到的错误是
尝试调用方法“EnableMouseWheel”(零值)
但如果我这样做
MyFrame1:EnableMouseWheel(true)
从来没有问题,它可以工作
无论如何使用变量作为方法的框架名称?
这将起作用:
local vars = getfenv()
for i=1, 10 do
local frame = "MyFrame"..i
vars[frame]:EnableMouseWheel(true)
end
尽管您似乎正在寻找错误问题的解决方案。为什么不将它们存储在一个数组中呢?
如果要将字符串名称转换为变量名称,则需要以表的形式访问全局对象:
_G["MyFrame1"]
我不知道Lua魔兽使用的是什么版本。如果它是一个没有 _G 的非常旧的版本,那么您可能需要改用 getglobal 函数
getglobal("MyFrame1")
也就是说,这通常是一种反模式。如果您是最初定义 MyFrame 变量的人,通常最好使用数组来代替:
Myframes = {
MyFrame1,
MyFrame2,
}
因为这可以让您避免字符串操作
local frame = MyFrames[i]
frame:EnableMouseWheel(true)