timer.performWithDelay无法正常工作。

我有以下代码:

local function RemovePlayer()
    print("Something")
end

function change(e)
    if(e.phase=="began")then
        Player.alpha=1
        Player.height=50
        Player.width=50
    end
    if(e.phase=="moved")then
    angle=(math.atan2( (e.y - Player.y), (e.x - Player.x))*180)/math.pi +90
    Player.rotation=angle
    end
    if(e.phase=="ended")then
        transition.to(Player,{time=200,height=32,width=32})
        local xx = (e.x-Player.x)*2
        local yy = (e.y-Player.y)*2
        Player.bodyType = "dynamic"
        Player:applyForce( xx, yy, Player.x, Player.y )
        timer.performWithDelay ( 10000,RemovePlayer() )
    end

return true
end

问题是timer.performWithDelay似乎没有正确地工作,因为"Sometihng"立即打印到控制台,而不是在10000延迟后。 任何想法为什么会发生这种情况?

点赞
用户1979583
用户1979583

尝试按照以下方式调用您的计时器:

timer.performWithDelay(10000,RemovePlayer,1)
- 1 是要调用 'RemovePlayer' 函数的次数。

继续编码......... :)

2013-06-06 06:51:23
用户1190388
用户1190388

这种情况可能是因为:

  1. 你的计时器会先执行函数,然后在 10000 毫秒后再次执行它。因此,你可以立即得出输出。

    如果你想让用户等待 10 秒钟,请使用 os.sleep(10)

  2. 另一个可能的原因是,在声明计时器时调用了函数。请将以下内容更改为:

    timer.performWithDelay(10000, RemovePlayer())
    

    改为:

    timer.performWithDelay(10000, RemovePlayer)  -- 注意这里没有 ()
    
2013-06-06 07:00:05