多次检查pygame事件

时间:2013-11-03 17:02:32

标签: python pygame

在pygame中是否可以在pygame.event.get()中使用“for event:”在同一个循环中多次,或者你只需​​要使用一次?我正在学习pygame,我决定定义两个检查事件的函数,但是当一个函数被调用时,另一个函数不起作用。请记住,我是一个菜鸟。这显然不是实际的代码,但它是我正在做的事情的主旨。

import pygame

class someclass:
    def __init__(self):
        some declaration
    def somefunction(self):
        for event in pygame.event.get():
            if event.type == someevent:
                some code
    def mainloop(self):
        someinstance = somesubclass()
        while True:
            someinstance.somefunction2()
            self.somefunction()

class somesubclass:
    def __init__(self):
        some declaration
    def somefunction2(self):
        for event in pygame.event.get():
            if event.type == someevent
                somecode

maininstance = someclass()
maininstance.mainloop()

某些功能无法执行

2 个答案:

答案 0 :(得分:0)

您的问题出在事件系统中。

如果你得到了事件,那么事件就会被破坏,所以你无法再次获得它 - 这是正常的。

您获得somefunction2中的所有活动,而somefunction无关。

答案 1 :(得分:0)

如果您希望在应用程序的许多部分检查事件,尽管不可取 - 因为当应用程序变大时,您将不知道某个按钮的作用。

这就是:

import pygame

class MainClass:
    def __init__(self):
        self.someinstance = SomeSubclass()
    def check_events(self):
        for event in pygame.event.get():
            self.someinstance.somefunction2(event)
            if event.type == someevent:
                some code
    def mainloop(self):
        someinstance = somesubclass()
        while True:
            self.somefunction()

class SomeSubclass:
    def __init__(self):
        some declaration
    def somefunction2(self,event):
        if event.type == someevent
            somecode

目标是将事件传播到每个对象,它将是决定,做什么的对象。