2016-05-30 92 views
1

在我的代码中,我有一个计时器称为计时器。我通过做timer.tick()在游戏中的某处开始了 。我想知道是否有任何类型的命令可以停止记录时间的计时器,并停止。因为如果我将它设置为零,它会继续下去,这是我尝试过的。是否有像timer.stop()这样的命令。我已经尝试了许多东西,如网上找的这个,它设置为零,等等。如何停止计时器刻度

谢谢 EDIT_______________________

这是主循环

clock = pygame.time.Clock() 
FPS = 60 
timer = pygame.time.Clock() 
storydelay = 5000 
time_count = 0 

前的变量主循环后

if story: 

    timer.tick() 
    time_count += timer.get_time() 

    if time_count < storydelay: 
     mainmenu = False 
     screen.blit(black_image,zero_position) 
    if time_count > storydelay: 
     mainmenu = True 

基本上我想要做的是当time_count> storydelay时,计时器应该停止,所以我可以回忆起回来一些其他时间

+0

嗯,我只需要一个命令,但确定只是几秒钟 – abc1234

+0

不知道你的意思吗? – abc1234

+0

所以,只需在最后一条if语句之后设置'timer = 0'和'time_count = 0'。 –

回答

2

因为timer.get_time()返回上一次调用timer.tick()的时候,你所要做的就是设置timer_count回0和call timer.tick()重置一切。

下面是一个例子:

import pygame 

clock = pygame.time.Clock() 
FPS = 60 
timer = pygame.time.Clock() 
storydelay = 5000 
time_count = 0 

story = True 
timer.tick() 

while story: 
    time_count += timer.tick() 
    if time_count < storydelay: 
     pass 
    if time_count > storydelay: 
     time_count = 0 
     print "story done" 
     story = False 
    clock.tick(FPS) 

main_menu = True 
timer.tick() 

while main_menu: 
    time_count += timer.tick() 
    if time_count > 3000: 
     time_count = 0 
     print "menu done" 
     main_menu = False 
    clock.tick(FPS) 

print "done" 

正如你所看到的,如果每次开始循环之前; timer.tick()被调用,当每个循环关闭时time_count被重置

希望这有助于。

+0

你不需要第二个'时钟'。 – skrx

+1

的确,我在辩论是否删除它或保留它,因为它更紧密地遵循了OP的代码 –

+0

是的,该评论实际上更直接@ abc1234。 OP是否收到关于评论的答复通知? – skrx