如何在设定时间内 'blit' 精灵到 window

How to 'blit' sprites onto window for a set time

我搜索了其他类似的话题,但没有找到。我想要的是将一个精灵 blit 到 window 上,让我们说 5 秒(5000 毫秒),当时间到了时,它取消它。谢谢。

class Flag():

    def Flagrun(self):
        flaggen = str(randint(1,4))
        global milliseconds
        global flagactive
        if flaggen == '1':
            flag_x = 58
            flag_y = 89

        elif flaggen == '2':
            flag_x = 464
            flag_y = 82            

        elif flaggen == '3':
            flag_x = 343
            flag_y = 215

        elif flaggen == '4':
            flag_x = 66
            flag_y = 535

        window.blit(flag, (flag_x,flag_y))
        collisiondet()
        milliseconds += clock.tick_busy_loop(60)
        print(milliseconds)
        flagactive = 'No'

您可以通过多种方式完成您想要完成的任务。你不能只 "unblit" 一个图像,你必须在它上面绘制,或者通过擦除屏幕,或者重新绘制它后面应该有的任何东西。

这是一个非常基本的程序,每隔一秒显示一个红色圆圈,每隔两秒显示一个蓝色圆圈,每隔三秒显示一个绿色圆圈,每隔三秒显示一个黄色圆圈。这利用模数来跟踪何时应该显示内容。

import pygame, sys
pygame.init()
screen = pygame.display.set_mode([400,100])
clock = pygame.time.Clock()

timer = 0
fps = 60
while 1:
    clock.tick(fps)
    timer += 1
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    screen.fill([255,255,255])
    if int(timer/fps)%2==0:
        pygame.draw.circle(screen, [255,0,0], [0,0], 50)
    if int(timer/(fps*2))%2==0:
        pygame.draw.circle(screen, [0,0,255], [100,0], 50)
    if int(timer/(fps*3))%2==0:
        pygame.draw.circle(screen, [0,255,0], [200,0], 50)
    if int(timer/fps)%3==0:
        pygame.draw.circle(screen, [255,255,0], [300,0], 50)
    pygame.display.flip()

您应该能够在您的程序中包含类似的内容。如果您对如何执行此操作感到困惑,请贡献您的代码,以便我将其放在上下文中。我无法测试此代码(使用学校计算机),但它应该可以工作。如果您有任何其他问题,请在下面的评论中留下它们,我会尽快回答。