因此,当分数达到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很新,不知道如何说出来!
修改 这就像它正确地延迟它,但是在最后一帧正确地进行,而不是在延迟的整个持续时间内,就像它想要的那样。
答案 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之前做一次。