我已经尝试了
timer.script(function(wait)
repeat
wait(0)
until condiction
end)
但它没有用。请帮帮我!
答案 0 :(得分:0)
timer.script并非真正针对您尝试做的事情而设计,尽管可能可以让它发挥作用。
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()
方法。这使每个对象都有机会检查不同的条件并对它们做出响应。
另一种方法是命名您的条件并使用像beholder这样的事件系统来触发事件(以及任何已注册的回调函数)。
或者(如果在love.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)