Timer 在Lua睡觉而不禁止之前的命令
在Lua中,没有一种简单的方法可以让你在所需的时间内入睡。为了解决这个问题,我创建了一个函数,它可以为我做到这一点:Timer 在Lua睡觉而不禁止之前的命令,timer,lua,delayed-execution,Timer,Lua,Delayed Execution,在Lua中,没有一种简单的方法可以让你在所需的时间内入睡。为了解决这个问题,我创建了一个函数,它可以为我做到这一点: local clock = os.clock function sleep(n) -- seconds local t0 = clock() while clock() - t0 <= n do end end 目标是在地面上施加线性脉冲,然后冻结游戏。然而,这只是在应用冲动之前冻结了游戏。一般来说,如何确保在睡觉前执行上一个命令?在Corona中,对
local clock = os.clock
function sleep(n) -- seconds
local t0 = clock()
while clock() - t0 <= n do
end
end
目标是在地面上施加线性脉冲,然后冻结游戏。然而,这只是在应用冲动之前冻结了游戏。一般来说,如何确保在睡觉前执行上一个命令?在Corona中,对对象的动态操作(如应用脉冲、移动、启动计时器等)实际上只有在代码返回后才“生效”。您必须使用
timer.performWithDelay(1,function()sleep(1)end)
一旦计时器回调运行,GUI将仅在从该回调返回时更新(
sleep
),因此您的GUI将在1秒内冻结。这似乎就是您想要的效果,尽管通常您不想冻结GUI 似乎applylinearpulse
函数在某个主循环的下一次迭代中生效,而sleep
函数阻止您返回该主循环。大多数事件系统/主循环都内置了某种形式的计时器,但我们需要知道您正在处理的事件系统/主循环,以帮助您调整睡眠功能。
player:applyLinearImpulse(0, -14, player.x, player.y)
sleep(1)