2

pygameタイマーを試して、タイマーを一時停止し、前回からタイマーを再開する方法を探しています。


pygame.time.get_ticks()アプリの起動から時間を記録する作業のような機能。

プログラムのように機能するdelaywait、プログラムをフリーズします。私はそれをしたくありません。

タイマーオブジェクトを追跡し、必要なときに一時停止し、必要なときに続行する簡単な方法はありますか?

def timer(self):
    self.time = (pygame.time.get_ticks()//1000)  
    self.time = self.time - self.pausetime 
    return self.time

self.pausetime = (pygame.time.get_ticks()//1000)

イベントが別の時間に定義された別の変数であるため、上記は機能しませんself.pausetime。アプリケーションの開始からの時間を返します。

pause一時停止から戻るたびにゼロに設定できる変数が必要だと思います。


私が見落としたかもしれない考えや簡単な方法はありますか?

4

1 に答える 1

1

このようなものがうまくいくかもしれません。ただし、テストしていません。

class Timer:
    def __init__(self):
        self.accumulated_time = 0
        self.start_time = pygame.time.get_ticks()
        self.running = True

    def pause(self):
        if not self.running:
            raise Exception('Timer is already paused')
        self.running = False
        self.accumulated_time += pygame.time.get_ticks() - self.start_time

    def resume(self):
        if self.running:
            raise Exception('Timer is already running')
        self.running = True
        self.start_time = pygame.time.get_ticks()

    def get(self):
        if self.running:
            return (self.accumulated_time +
                    (pygame.time.get_ticks() - self.start_time))
        else:
            return self.accumulated_time
于 2013-11-11T18:56:04.157 に答える