尝试调用方法'插入' (零值)

时间:2013-05-16 12:05:03

标签: lua corona

为什么我在包含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)

1 个答案:

答案 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)