在没有禁止上一个命令的情况下在Lua睡觉

时间:2014-06-02 03:52:46

标签: timer lua delayed-execution

在Lua,没有简单的方法可以在理想的时间内睡觉。为了解决这个问题,我创建了一个为我做这个的功能:

local clock = os.clock
function sleep(n)  -- seconds
   local t0 = clock()
   while clock() - t0 <= n do
   end
end

然后我将其应用于某些代码:

player:applyLinearImpulse(0, -14, player.x, player.y)
sleep(1)

目标是将线性冲动施加到地面然后冻结游戏。然而,这只是在施加冲动之前冻结游戏。一般来说,如何在睡觉之前确保执行上一个命令?

1 个答案:

答案 0 :(得分:0)

在Corona中,对象的动态操作(如应用冲动,移动,启动计时器等)实际上只是在代码返回后“制定”。您必须使用timer.performWithDelay(1, function() sleep(1) end)

一旦运行定时器回调,GUI将仅在从该回调(sleep)返回时更新,因此您的GUI将在1秒内冻结。这似乎是你正在寻找的效果,虽然通常你不想冻结GUI。