2

尝试使用 pygame timer 并寻找暂停计时器的方法,然后从上一次重新启动计时器。


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)

以上将不起作用,因为 event ifself.pausetime是在不同时间定义的不同变量,它仍将返回自应用程序启动以来的时间量。

我想我需要一个pause可以在每次暂停时设置为零的变量。


我可能看过的任何想法或简单方法?

4

1 回答 1

1

Something like this might work. Haven't tested it, though.

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 回答