2017-02-14 7 views
0

私はdefの2つの機能を実行しました。私は、私が他をやりなおすことなく私ができることを作ることができるために、私はこれらに参加したくありません。問題は私が2つのfor event in pygame.event.get()を持っていて、最初のpygame.event.get()として別のものを使用しようとするたびにと呼ばれた後にすべてのイベントを取り除くは、他のイベントを使用できません。 2番目の機能。例えば、2つの "イベント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 

で、私はこれらのいずれかを行う場合は、2番目の文句を言わない仕事:

  • はfunc1の操作を行うと、次の行関数func2(FUNC2は動作しません)
  • はFUNC2をしますか、そして次の行は
(動作します)
  • だけではFUNC2を行う(動作します)
  • だけではFUNC1を行う関数func1(関数func1が動作しません)を行います

    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 
    
    関連する問題