Corona SDK Lua:将项目从一个表移动到另一个表

我对 Corona 并不熟悉,尝试在移动平台上进行对象池操作。当它们退出屏幕时,它们从 visibleBlocks 移动到 blocks。当我记录两个表的数量时,数字不会按照应有的方式匹配…并且我的块在屏幕上出现了很长一段空白时间。

我的块生成:

local color = 'red'
for i = 1, 10 do
    local block = display.newRect( 0, 0, 60, 2 )
    block.index = i
    block.name = 'block'
    block.isVisible = false
    physics.addBody( block, 'static' )
    blocks[i] = block
    sceneGroup:insert( block )

    block.color = color

    color = switchColor(block)
end

检测块离开屏幕的代码

function update()

    for k, block in pairs(visibleBlocks) do
        block.y = block.y - 1
        if block.y < 0 then
            removeBlock(block)
        end
    end

删除块代码

function removeBlock(block)

    block.isVisible = false
    block.isBodyActive = false
    blocks[block.index] = block
    visibleBlocks[block.index] = nil

    print (' ')
    print( 'blocks: ' .. #blocks)
    print( 'visible blocks: ' .. #visibleBlocks )

end

在定时器上执行的添加块

function addBlock()
    local block = table.remove( blocks )
    if block ~= nil then
        block.isVisible = true
        block.isBodyActive = true
        visibleBlocks[block.index] = block

        block.x = math.random(
            block.contentWidth/2 + 20,
            display.contentWidth - block.contentWidth/2 - 20
        )
        block.y = display.contentHeight

    end
end

我的控制台输出看起来像这样:

Oct 23 08:50:16.281: blocks: 0
Oct 23 08:50:16.281: visible blocks: 9
Oct 23 08:50:17.289:
Oct 23 08:50:17.290: blocks: 0
Oct 23 08:50:17.290: visible blocks: 8
Oct 23 08:50:18.329:
Oct 23 08:50:18.329: blocks: 10
Oct 23 08:50:18.329: visible blocks: 7
Oct 23 08:50:19.353:
Oct 23 08:50:19.354: blocks: 9
Oct 23 08:50:19.354: visible blocks: 6
Oct 23 08:50:20.313:
Oct 23 08:50:20.314: blocks: 8
Oct 23 08:50:20.314: visible blocks: 5
Oct 23 08:50:21.339:
Oct 23 08:50:21.340: blocks: 0
Oct 23 08:50:21.340: visible blocks: 10
Oct 23 08:50:22.376:
Oct 23 08:50:22.376: blocks: 7
Oct 23 08:50:22.376: visible blocks: 10
Oct 23 08:50:23.390:
Oct 23 08:50:23.390: blocks: 6
Oct 23 08:50:23.390: visible blocks: 10
Oct 23 08:50:24.392:
Oct 23 08:50:24.393: blocks: 5
Oct 23 08:50:24.393: visible blocks: 10
Oct 23 08:50:25.457:
Oct 23 08:50:25.457: blocks: 4
Oct 23 08:50:25.458: visible blocks: 10

这些数字应该总是加起来等于 10 吧?这里有些地方不对。

点赞