1

我有以下代码:

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似乎无法正常工作,因为在结束阶段之后立即在控制台中打印“Something”,而不是延迟 10000。知道为什么会这样吗?

4

2 回答 2

7

发生这种情况可能是因为:

  1. 您的计时器将首先执行该功能;然后在 10000 毫秒过去后再次执行它。因此,您可以立即获得输出。

    如果您想让用户等待 10 秒;使用os.sleep( 10 ).

  2. 另一个可能的原因是您在声明计时器时调用了该函数。改变:

    timer.performWithDelay ( 10000,RemovePlayer() )
    

    timer.performWithDelay ( 10000, RemovePlayer )  -- Notice no () here
    
于 2013-06-06T07:00:05.127 回答
1

尝试如下调用您的计时器:

timer.performWithDelay ( 10000,RemovePlayer,1 ) 
-- 1 is the number of times that the 'RemovePlayer' function is to be called.

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

于 2013-06-06T06:51:23.257 回答