Lua IDE Cocos。表格几乎正常工作,然后以一种奇怪的方式停止工作。

这是有问题的代码的简短摘录。摘要是将 3 个 ccsprite 放入 lua 表格中,然后我尝试以与我正在使用的示例相同的方式将这些节点添加到 cclayer 中。我收到的错误是:

addChild has wrong number of arguments: 0, was expecting 3

也许我可以相信表项在进入 add function 时会消失,并进行一些创造性的 Lua 范围意识的解释,但是另一方面,如果我在添加表项中的精灵之前将 4 添加到表中(此代码已经存在并被注释),我会得到此错误:

[LUA-print] LUA ERROR: [string ".\GameScene.lua"]:101:
     error in function 'lua_cocos2dx_Node_addChild'.
     argument #1 is 'number'; 'cc.Node' expected.

因此,我发现 addChild 很乐意吞咽 3 个精灵,但它声称它们的存在代表了参数计数为 0。我对 Lua 很陌生,但这是一个不合理的错误。我不明白。另请注意,在 Lua 得到的 C++ 中,addchild() 是一个只有一个参数而不是 3 或更少的参数的函数。

Pens = {}

for i = 1, 3 do  -- 范围包括两端。
    local bg = cc.Sprite:create("farm.jpg")
    local spriteSize = bg:getContentSize()
    local heightScale = frameSize.height/spriteSize.height
    local lengthScale = frameSize.width/spriteSize.width

    bg:setPosition(i*(self.origin.x + self.visibleSize.width / 2),
     i*(self.origin.y + self.visibleSize.height / 2))
    bg:setScale(lengthScale/2,heightScale/2)

    Pens[i] = bg --.newKey = {i,bg}
    print(Pens[i])
end

--Pens[4] = 4
--print(Pens[4])
print("bleh")

print(Pens[2])

for i, v in ipairs(Pens) do
    print(v)
    layerWorld.addChild(v)
end

拥有相同行为的更简单的代码:

Pens = {}

for i = 1, 5 do

    local spriteLand = cc.Sprite:create("land.png")
    spriteLand:setPosition(i*20,i*20)
    Pens[i] = spriteLand

end

for i, v in ipairs(Pens) do
    print(v)
    layerWorld.addChild(v)
end
点赞
用户201863
用户201863

我无法解释这个问题,但也许这是一个解决方案。在 for 循环中,i 是索引,v 是值,因此您无需索引表即可获取值。只需尝试:

for i, v in ipairs(Pens) do
    print(v)
    layerWorld.addChild(v)
end
2014-07-31 12:27:41
用户3481313
用户3481313

layerWorld.addChild(v) -> layerWorld:addChild(v) 应该可以正常工作!

2015-08-16 03:03:10
用户5972490
用户5972490

很明显: 转换为 ==== > layerWorld:addChild(v)layerWorld.addChild(self, v)

2018-04-12 06:20:37