Lua 如何等待LOVE2D中给出条件?
我试过了Lua 如何等待LOVE2D中给出条件?,lua,wait,repeat,love2d,Lua,Wait,Repeat,Love2d,我试过了 timer.script(function(wait) repeat wait(0) until condiction end) 但它不起作用。请帮帮我 并不是专门为你想做的事情而设计的,尽管它可能会起作用 LÖVE框架是围绕draw()和update()回调构建的,我建议您先学习如何使用这些回调来完成这项任务,然后再继续使用这些回调之上的方法层。当您的条件第一次满足时,类似这样的操作应该只运行代码一次: local hasHappened = false function
timer.script(function(wait)
repeat
wait(0)
until condiction
end)
但它不起作用。请帮帮我 并不是专门为你想做的事情而设计的,尽管它可能会起作用
LÖVE框架是围绕draw()
和update()
回调构建的,我建议您先学习如何使用这些回调来完成这项任务,然后再继续使用这些回调之上的方法层。当您的条件第一次满足时,类似这样的操作应该只运行代码一次:
local hasHappened = false
function love.update(dt)
if (condition and not hasHappened) then
hasHappened = true
-- respond to condition here
end
end
通常,您不会直接在love.update()
中检查您的状况。相反,您将拥有一个包含游戏中所有对象的表,在love.update()
中,您将循环遍历此对象表,并对每个对象调用update()
方法。这使每个对象都有机会检查并响应不同的条件
另一种方法是命名您的条件,并在条件发生时使用类似于触发事件(以及任何注册的回调函数)的事件系统
或者(如果在love.update()
中调用计时器的update()),您可以使用计时器对象和every()
方法执行此操作:
local handle = timer:every(0.01, function()
if condition then
-- unregister timer, assuming you only want the code to be run once
timer:cancel(handle)
-- respond to condition here
end
end)
这不是一个正确的错误描述。还请阅读,不清楚您在等待什么,以及您是否想在等待时做其他事情。您还应该提供更多的代码和上下文。什么是timer.script?我只能假设它来自驼峰库,如果,如果你什么都不做,只等待0秒,你期望会发生什么?你是在寻找一个函数来调用一个给定的事件(即,一个回调函数,用于每次按下一个键都会触发的按键)或者类似于do while循环的东西?我使用了hump.timer和timer.script,它是一种使用
wait
而不是timer的方法。在之后如何使用timer.cancel?arturgps2:atimer
实际上更像一个时钟,因为它同时管理多个计时器。要取消计时器,如上面代码示例中的every()
,您需要存储特定:every()
计时器的句柄(引用),如上所述,并将其作为第一个参数传递给cancel()
。注意使用冒号:cancel
代替点符号。cancel
,因为这是一个方法调用。这就是我所能想到的,如果你有更多的问题,你需要更具体一点。实际上我忘记了timer.update
到love.update
,但这个建议也帮了我。谢谢你的帮助。