两个“for pygame.event.get()中的事件”

时间:2017-02-14 00:34:23

标签: python python-2.7 events event-handling pygame

我已经def完成了两个功能。我不想加入这些,因为我希望能够在不做其他事情的情况下做出我能做的事情。问题是我有两个for event in pygame.event.get() s,每当我尝试一个接一个地使用时,第一个pygame.event.get()在调用后删除所有事件,所以我不能在第二个函数中使用其他事件。例如,在

def Func1():
  for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
      #Do something

def Func2():
  for event in pygame.event.get():
    if event.type == pygame.MOUSEBUTTONDOWN:
      #Do something

如果我做了其中任何一项,那么第二种方法就不会起作用:

  • 执行Func1,下一行执行Func2(Func2不起作用)
  • 执行Func2,下一行执行Func1(Func1不起作用)
  • 单独执行Func1(可行)
  • 单独执行Func2(可行)

我做了一些实验,发现for event in pygame.event.get():在调用之后摆脱了所有的活动,这就是我遇到问题的原因。任何人有任何想法如何绕过这个?谢谢,如果您需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:2)

完成上述操作的最简洁方法(如果可能,取决于您需要做什么)将是这样的。您有一个事件循环,它将根据按下的键调用不同的函数。

def Func1():
    print('key pressed')

def Func2():
    print('mouse pressed')

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        Func1()
    elif event.type == pygame.MOUSEBUTTONDOWN:
        Func2()

如果每个函数必须有一个事件循环,请在帧的开头定义事件列表并将其传递给函数。

def Func1(events):
  for event in events:
    if event.type == pygame.KEYDOWN:
      #Do something

def Func2(events):
  for event in events:
    if event.type == pygame.MOUSEBUTTONDOWN:
      #Do something

pygame_events = pygame.event.get()
Func1(pygame_events)
Func2(pygame_events)