我已经阅读了所有我能找到的内容并查看了许多关于pyglet的游戏循环示例,但我仍然不确定它是如何工作的或者究竟发生了什么。
(这些是我读过的文章......)
http://www.pyglet.org/doc/programming_guide/the_application_event_loop.html
http://www.pyglet.org/doc/api/toc-pyglet.event-module.html
我知道基本结构是这样的(这只是一个例子):
INITIALIZE GAME WINDOW
game_window = pyglet.window.Window(800, 600)
ATTACH EVENT HANDLERS
@game_window.event
def on_draw():
game_window.clear()
player_sprite.draw()
START PYGLET
pyglet.app.run()
我知道这一切都在实践中有效,但我不太明白。而且我觉得在掌握好机制之前,我无法充分利用pyglet。
所以你告诉pyglet运行并且...它找到有事件的对象(game_window)并且它以某种方式找到并调用你附加处理程序的那些函数?它如何知道找到它们的范围/命名空间?是否只扫描整个代码,直到找到放置事件处理程序的位置为止?它会绕过它们吗?它如何知道从哪里开始和停止循环?它是如何工作的?
谢谢!
答案 0 :(得分:1)
让我们玩:
class Window:
def __init__(self, x, y):
global app
app = self
def event(self, func):
self.what_todo = func
def run(self):
self.what_todo()
>>> game_window = Window(800, 600)
>>>
>>> @game_window.event
... def on_draw():
... print("I am drawing!")
...
>>> app.run()
I am drawing!
>>>
当然,他们可能做的事情有点不同,但我希望你能得到基本的想法。