尝试调用方法'insert'(空值)的错误。

为什么我在包含insert的行上得到了一个attempt to call method 'insert' (a nil value)错误?

将其更改为instance.sprites = bg确实可以使其正常工作,但我希望在一个单独的表中返回所有精灵(sprites)。

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)
点赞
用户2303714
用户2303714
`instance.index = writingTool` 

应该改为

`instance.__index = writingTool`

虽然我会将上面这行代码删除,并在下面的代码中这样实现:

`setmetatable(instance,{__index=writingTool})`

另外,`t:insert()` 或 `t.insert()` 在 **_default_** 中没有被定义,要向表中插入元素,应该使用如下定义的 `table.insert` 函数:

> table.insert (table, \[pos,\] value)

因此应该使用 `table.insert(instance.sprites,bg)`。通过这些修改,你的函数应该是这样的:

function writingTool:new() local instance = { sprites = {} } setmetatable(instance, {__index = wirtingTool}) local bg = display.newImage("images/backgrounds/wooden_bg.png") bg.x = _W/2 bg.y = _H/2 table.insert(instance.sprites,bg) return instance end

```

2013-05-16 12:11:39