Python pyglet游戏循环究竟是如何工作的?

Python pyglet游戏循环究竟是如何工作的?,python,pyglet,Python,Pyglet,我已经阅读了我能找到的所有内容,并查看了许多pyglet上的游戏循环示例,但我仍然不确定它是如何工作的,或者到底发生了什么 (这些是我读的文章…) 我知道基本结构是这样的(这只是一个例子): 我知道这一切在实践中都有效,但我不太明白。我觉得在我掌握好力学之前,我无法充分发挥pyglet的潜力 所以你让皮格莱特跑,然后。。。它查找具有事件的对象(游戏窗口),并以某种方式查找和调用您附加处理程序的那些函数?它如何知道在哪个作用域/命名空间中找到它们?它只是扫描整个代码直到找到事件处理程序的位置吗

我已经阅读了我能找到的所有内容,并查看了许多pyglet上的游戏循环示例,但我仍然不确定它是如何工作的,或者到底发生了什么

(这些是我读的文章…)

我知道基本结构是这样的(这只是一个例子):

我知道这一切在实践中都有效,但我不太明白。我觉得在我掌握好力学之前,我无法充分发挥pyglet的潜力

所以你让皮格莱特跑,然后。。。它查找具有事件的对象(游戏窗口),并以某种方式查找和调用您附加处理程序的那些函数?它如何知道在哪个作用域/命名空间中找到它们?它只是扫描整个代码直到找到事件处理程序的位置吗?它会绕着它们转吗?它如何知道从何处开始和停止循环?它是如何工作的

谢谢大家!

我们来玩:

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!
>>>
当然,他们做的事情可能有点不同,但我希望你能了解基本的想法。

让我们一起玩:

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!
>>>

当然,他们做的事情可能有点不同,但我希望你能了解基本的想法。

@game\u window.event
几乎可以做任何事情。它不需要找到它——它不像java中的注释。它本质上是一个命令。
@game\u window.event
几乎可以做任何事情。它不需要找到它——它不像java中的注释。这本质上是一个命令。谢谢!我现在意识到我完全误解了装饰师的工作方式。我和我的一个(非Python)程序员朋友讨论了这个问题,阅读了《踩Python,第2卷》中关于闭包和装饰器的章节,并花了两天时间思考你的答案。。。现在我明白了!谢谢,谢谢!我现在意识到我完全误解了装饰师的工作方式。我和我的一个(非Python)程序员朋友讨论了这个问题,阅读了《踩Python,第2卷》中关于闭包和装饰器的章节,并花了两天时间思考你的答案。。。现在我明白了!非常感谢。