我一直在搞乱这几个小时,我似乎无法让这个工作
for i=1, 10 do
local frame = "MyFrame"..i
frame:EnableMouseWheel(true)
end
我得到的错误是
attempt to call method 'EnableMouseWheel' (a nil value)
但如果我这样做
MyFrame1:EnableMouseWheel(true)
什么都没有问题,并且它有效
无论如何是否使用变量作为方法的框架名称?
答案 0 :(得分:1)
这将有效:
local vars = getfenv()
for i=1, 10 do
local frame = "MyFrame"..i
vars[frame]:EnableMouseWheel(true)
end
虽然您似乎正在寻找解决错误问题的方法。为什么不将它们存储在数组中呢?
答案 1 :(得分:0)
如果要将字符串名称转换为变量名称,则需要以表格形式访问全局对象:
_G["MyFrame1"]
我不知道Lua warcraft使用的版本。如果它是一个没有_G的旧版本,那么你可能需要使用getglobal函数
getglobal("MyFrame1")
那就是说,这通常是反模式。如果您是最初定义MyFrame变量的人,那么通常更好地使用数组:
Myframes = {
MyFrame1,
MyFrame2,
}
因为这可以避免字符串操作
local frame = MyFrames[i]
frame:EnableMouseWheel(true)