pygame では、pygame.event.get() 関数がイベント キューからイベントを取得して削除します。ただし、複数のイベント ループはイベントの損失や遅延につながる可能性があります。
pygame ゲームの次のコード スニペットを考えてみましょう。
def check_input(self): for event in pygame.event.get(): if (event.type == pygame.KEYUP) and (event.key == pygame.K_SPACE): print ('boop') self.shootThrottle = 0
check_input 関数はすべてのループを実行し、イベントの処理を試みます。ただし、そのパフォーマンスは、pygame.event.get() の遅い性質によって妨げられます。その結果、ゲームでイベントの損失と遅延が発生します。
根本的な問題は、pygame.event.get() がリアルタイムのイベント リスナーとして機能するという誤解にあります。代わりに、すでに発生したイベントのみを取得します。
この問題を解決するには、複数の pygame.event.get() ループを回避し、代わりにフレームごとに 1 回イベントを取得する必要があります。イベントは複数のループに分散するか、または関数:
def handle_events(event_list): for event in event_list: # Event handling logic while run: event_list = pygame.event.get() # First event loop # ... # Second event loop # ... # Call event handling function handle_events(event_list)
これにより、すべてのイベントが迅速に処理されることが保証され、イベントの損失や遅延の問題が排除されます。
以上がPygame のイベント処理におけるイベントの損失と遅延を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。