即使有延迟,所有物体也会立即出现在显示屏上......我该怎么办?

时间:2015-08-13 15:33:19

标签: lua corona

local path = pather:getPath(startx,starty, endx,endy)

    if path then
        compPath = display.newGroup();
        for node, count in path:nodes() do
            --timer.performWithDelay( 1000, function (event) 
                print(('Step: %d - x: %d - y: %d'):format(count, node:getX(), node:getY()))
                local tile = display.newRect((node:getX() * 50) - 25, (node:getY() * 50) - 25, 48, 48)
                colorCell(tile, 0, 0, 255)
                tile.alpha = 0

                usleep(500);
                transition.fadeIn( tile, { time=1500 } )
                compPath:insert(tile)
            --end
            --)

        end
   end

我有这条路,我试图动画,因为它出现但似乎所有人都显示,即使有延迟,或者如果我把它放在计时器进入喷射。我是否必须每隔一秒使用帧率显示它?

我错过了什么?

1 个答案:

答案 0 :(得分:3)

您没有增加循环中的延迟时间,因此您计划所有路径节点在1秒内显示。

请记住,循环几乎立即执行(计算机速度很快)。

试试这个:

if path then
    compPath = display.newGroup();
    local revealInterval = 500
    local revealTimeout = 0
    for node, count in path:nodes() do
        timer.performWithDelay( revealTimeout, function (event)
            local tile = display.newRect((node:getX() * 50) - 25, (node:getY() * 50) - 25, 48, 48)
            colorCell(tile, 0, 0, 255)
            tile.alpha = 0
            transition.fadeIn( tile, { time=1500 } )
            compPath:insert(tile)
        end
        )

        revealTimeout = revealTimeout + revealInterval
    end