我如何等待LOVE2D中的情况?

时间:2017-01-23 22:54:31

标签: lua wait repeat love2d

我已经尝试了

timer.script(function(wait)
repeat
    wait(0)
until condiction
end)

但它没有用。请帮帮我!

1 个答案:

答案 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)