[…]并在循环中有 两个 for事件
pygame.event.get()[..]“
这就是问题。
pygame.event.get()获取所有消息并将其从队列中删除。如果
pygame.event.get()在多个事件循环中调用if ,则只有一个循环接收事件,但绝不会所有循环都接收所有事件。结果,似乎错过了一些事件。
获取一次事件,并在多个循环中使用它们,或将列表或事件传递给处理它们的函数和方法:
def handle_events(events): for event in events: # [...]while run: event_list = pygame.event.get() # [...] # 1st event loop for event in event_list: # [...] # [...] # 2nd event loop for event in event_list: # [...] # [...] # function which handles events handle_events(event_list)



