use*_*169 4 python timedelta game-loop 2d-games arcade
我\xe2\x80\x99m正在阅读Python Arcade上的教程,并且想知道一个函数如何/为什么工作。
\n\n有一个函数叫on_draw(delta_time)
我查看了街机的代码,但无法弄清楚该库如何知道保持时钟运行。有人可以帮助我理解它是如何工作的以及为什么工作吗?
\n\n一个例子在这里:http ://arcade.academy/examples/bouncing_rectangle.html#bouncing-rectangle
\n\n\n\ncan\xe2\x80\x99t 弄清楚库如何知道保持时钟运行。
\n
该库使用时钟定期调用您的on_draw函数,并将经过的时间(以秒为单位)作为参数传递给它
既然您询问了这一切是如何连接的详细信息,让我们看一下:
\n\n这一切都从你的函数开始main()。您正在呼叫:
# Tell the computer to call the draw command at the specified interval.\n arcade.schedule(on_draw, 1 / 80)\nRun Code Online (Sandbox Code Playgroud)\n\n所以你正在调用arcade.schedule 传递对 的引用on_draw。
好吧,我们就进兔子洞吧!
\n\narcade.schedule此处记录如下:
\n\n\nRun Code Online (Sandbox Code Playgroud)\n\narcade.schedule(function_pointer: Callable, interval: numbers.Number)\n安排一个函数每隔间隔秒自动调用一次。
\n
...遗憾的是,他们没有更具体地说明如何调用函数(即使用哪些参数,如果有的话)——我们必须查看源代码,省略了文档字符串:
\n\n\n\n\nRun Code Online (Sandbox Code Playgroud)\ndef schedule(function_pointer: Callable, interval: Number):\n pyglet.clock.schedule_interval(function_pointer, interval)\n
就是这样!它基本上是将工作委托给pyglet.clock.schedule_interval,并且在这里,我们不知道它传递给我们的函数的参数是什么...我的意思是我们有一个想法,但你要求一个证明,所以你需要一个证明会得到!
挖掘文档schedule_interval (为了简洁和清晰而编辑——粗体文本是我的):
\n\n\n\n\n
schedule_interval(func, interval, *args, **kwargs)安排一个函数每隔间隔秒调用一次。
\n\n该函数应该有一个原型,其中包含dt作为第一个参数,它给出自上次调用以来经过的时间(以秒为单位)。给予此函数的任何其他参数都会传递给回调:
\n\nRun Code Online (Sandbox Code Playgroud)\n\ndef callback(dt, *args, **kwargs):\n pass\n参数:
\n\n\n
\n- func (
\ncallable) \xe2\x80\x93 定时器超时时调用的函数。- Interval (
\nfloat) \xe2\x80\x93 每次调用之间等待的秒数。
在这里,您已经看到了:它表示您的函数将以经过的时间作为第一个参数来调用。 (好吧,我必须编辑该部分,但我确信这就是他们的意思!)
\n\n现在,请不要问我pyglet.clock内部是如何工作的;)
| 归档时间: |
|
| 查看次数: |
2137 次 |
| 最近记录: |