为什么我在包含attempt to call method 'insert' (a nil value)
的行上出现insert
错误?
将其更改为instance.sprites = bg
确实可以使它工作,但我想在一个单独的表(sprite)中返回所有精灵。
local writingTool = {}
local _W, _H = display.contentWidth, display.contentHeight
function writingTool:new()
local instance = {}
instance.index = writingTool
setmetatable(instance, self)
instance.sprites = {}
local bg = display.newImage("images/backgrounds/wooden_bg.png")
bg.x = _W/2
bg.y = _H/2
instance.sprites:insert(bg)
return instance
end
return writingTool
修改:尝试instance.sprites.bg = bg
也不起作用。给出这个错误:
bad argument #-2 to 'insert' (Proxy expected, got nil)
答案 0 :(得分:3)
instance.index = writingTool
应该是
instance.__index = writingTool
虽然我会删除上面的代码并在下面的代码中实现它,如下所示:
setmetatable(instance,{__index=writingTool})
此外,t:insert()
或t.insert()
未由 默认 定义,以便将元素插入到使用{{1}的表中函数定义如下:
table.insert(table,[pos,] value)
所以你应该有table.insert
。因此,通过这些修改,您的功能应如下所示:
table.insert(instance.sprites,bg)