如何在背景上将图像blit一两秒

时间:2013-11-25 14:16:03

标签: python pygame

因此,当分数达到50时,我试图在背景中将图像blit一两秒。我用过这个:

if score == 50:

                horrificImage = pygame.image.load('Image.jpg').convert()
                clock.tick(1)
                pygame.time.delay(1500)
                thescreen.blit(horrificImage, (0, 0))

它似乎延迟了一秒半,并且只是非常简短地显示了图像。我怎么做才能显示一秒/一秒半?我很抱歉,如果它看似简短,只对pygame很新,不知道如何说出来!

修改 这就像它正确地延迟它,但是在最后一帧正确地进行,而不是在延迟的整个持续时间内,就像它想要的那样。

2 个答案:

答案 0 :(得分:2)

Blit是为图像准备好屏幕,但不显示它的原因。你应该blit,然后在延迟之前用pygame.display.update()更新显示。

答案 1 :(得分:0)

使用pygame.time.get_ticks()获取当前时间并与time_to_blit

进行比较
# before mainloop
horrificImage = pygame.image.load('Image.jpg').convert()
time_to_blit = None

# in mainloop

# when you increase score
    score += 1
    if score == 50: # you can do even more: score == 50 or score == 100
        time_to_blit = pygame.time.get_ticks() + 1500 # 1.5 seconds

# when you blit images    
if time_to_blit: # you don't even need: score == 50
    thescreen.blit(horrificImage, (0, 0))
    if pygame.time.get_ticks() >= time_to_blit:
        time_to_blit = None

BTW:不要每次循环加载图像 - 你浪费时间。在mainloop之前做一次。