尝试使用pygame计时器并寻找暂停计时器的方法,并从上一次再次启动计时器。
像pygame.time.get_ticks()
这样的函数可以记录从应用程序开始的时间。
delay
或wait
等功能会冻结程序。我不希望这样。
是否有一种简单的方法可以跟踪计时器对象,在需要时暂停它并在需要时继续它?
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
变量,每次暂停时我都可以设置为零。
我可能有任何想法或简单的方法看了吗?
答案 0 :(得分: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