2013-05-16 40 views
1

如何在包含insert的行上得到attempt to call method 'insert' (a nil value)錯誤?嘗試調用方法'insert'(一個零值)

更改爲instance.sprites = bg確實能夠正常工作,但是我想在一個單獨的表格(精靈)中返回所有精靈。

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) 

回答

3
instance.index = writingTool 

應該

instance.__index = writingTool 

雖然我會刪除上面的線,並在一個下面像這樣實現:

setmetatable(instance,{__index=writingTool})

而且,t:insert()t.insert()未定義爲默認,將元素插入表中使用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 
+0

謝謝,但仍然是相同的錯誤! – Sunkas

+0

謝謝。 'instance.sprites.insert(bg)'給出了相同的錯誤 – Sunkas

+0

'bg'或'instance.sprites'都不爲零 – Sunkas

相關問題