簡體   English   中英

嘗試調用方法'insert'(零值)

[英]attempt to call method 'insert' (a nil value)

為什么我attempt to call method 'insert' (a nil value)在包含insert的行上attempt to call method 'insert' (a nil value)錯誤?

將它更改為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)
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM