回答
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)在情况发生时触发事件(以及任何已注册的回调函数)。
或(前提是您的计时器的update()被调用在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)
如何使用timer.cancel? – arthurgps2
arturgps2:“计时器”实际上更像是一个时钟而不是计时器,因为它同时管理多个计时器。为了取消一个定时器,就像上面的代码示例中的'every()'一样,你需要像上面那样存储一个句柄(一个引用)到那个特定的':every()'定时器,并且将它作为'cancel()'的第一个参数。注意使用冒号':cancel'而不是点符号'.cancel',因为这是一个方法调用。这就是我所能想到的一切,如果你有更多的问题,你需要更具体一些。 –
其实我忘了把'timer.update'换成'love.update',但这个建议对我也有帮助。谢谢您的帮助。 – arthurgps2
- 1. 我该如何等待JavaScript的结果?
- 2. 如何使函数在LUA(Love2d)中等待X时间?
- 3. 我该如何等待TTimer完成?
- 4. 我该如何等待回调?
- 5. 我该如何等待拉力?
- 6. 我该如何等待HANDLE/SafeHandle?
- 7. 我该如何等待ABPeoplePickerNavigationController被解雇
- 8. 在Java中等待条件
- 9. 如何等待任何条件变量?
- 10. 我该如何等待在javascript中执行事件
- 11. 如何用条件等待任务?
- 12. 使用Boost的ASIO,我该如何等待Windows事件?
- 13. 我该如何等待Angularfire 2中的观察值?
- 14. 条件检查等待有利条件
- 15. C++:条件变量等待
- 16. Pthread和等待条件
- 17. tomcat:等待条件线程
- 18. 我们如何等待NOT条件使用protractor.ExpectedConditions?
- 19. 在Perl中,我该如何等待线程并行结束?
- 20. iOS中的多线程 - 如何强制线程等待条件?
- 21. Java:我如何等待updateUI?
- 22. 如何等待C#中的WebBrowser控件
- 23. 如何在水豚场景中添加等待条件?
- 24. 杀死等待条件变量的pthread
- 25. 有条件的等待开销
- 26. Clojure等待没有旋转的条件
- 27. 等待没有循环的条件Python
- 28. 一条线程如何让条件变量而不是等待条件变量
- 29. 在std :: thread中等待条件A或条件B
- 30. 数据绑定更新前的事件触发 - 我该如何等待更新?
没有工作,是不是正确的错误描述。请阅读[问] 也不清楚你在等待什么,如果你想等待或没有做其他事情。你还应该提供更多的代码和上下文。什么是timer.script?我只能假设它来自HUMP库,如果你什么都不做,只等0秒会发生什么? – Piglet
您是否正在寻找一个在给定事件上被调用的函数(即每次按下某个键时触发的按键的回调函数)或类似于do-while循环的函数? – Thelmund
我用hump.timer和timer.script是一种使用'wait'而不是'timer.after'的方法 – arthurgps2