2017-02-14 23 views
0

我已經完成了def的兩個功能。我不想參加這些活動,因爲我希望能夠做一些事情,讓我可以做一件事而不做另一件事。問題是我有兩個for event in pygame.event.get()和每當我嘗試使用一個接一個作爲第一個pygame.event.get()擺脫所有事件後,它被稱爲,所以我不能使用其他事件第二個功能。例如,在兩個「For event in 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():在它被調用之後擺脫所有事件,這就是爲什麼我有問題。任何人有任何想法如何繞過這個?謝謝,並告訴我,如果你需要更多的信息。

回答

2

只需在幀的開始處將其設置爲一個變量並讀取該變量即可。

pygame_events = pygame.event.get() 

for event in pygame_events: 
    if event.type == pygame.KEYDOWN: 
     #do something 

for event in pygame_events: 
    if event.type == pygame.KEYDOWN: 
     #do something 

或者,如果它只是幾個鍵,以避免通過所有的事件循環兩次,如果該鍵被按下,你可以只標示:

key_down_pressed = False 

for event in pygame.event.get(): 
    if event.type == pygame.KEYDOWN: 
     key_down_pressed = True 
     #do something 

if key_down_pressed: 
    #do something