为什么显示时图像会闪烁?

时间:2021-06-15 03:09:52

标签: python image pygame

我正在我的游戏中制作时钟。大约 60 秒后,它会更改为下一个数字。我使用下面的子程序在需要时更改时钟图像。我的问题是图像在显示时会闪烁,我不希望这样。

我的代码;

def display_night_clock():  
    global var_clock
    global var_6_am
    
    if var_hide == False:
        if var_6_am == False:
            if var_clock == 1:
                screen.blit(image_12_am, (1266, 0))
                pygame.display.update()
            if var_clock == 2:
                screen.blit(image_1_am, (1266, 0))
                pygame.display.update()
            if var_clock == 3:
                screen.blit(image_2_am, (1266, 0))
                pygame.display.update()
            if var_clock == 4:
                screen.blit(image_3_am, (1266, 0))
                pygame.display.update()
            if var_clock == 5:
                screen.blit(image_4_am, (1266, 0))
                pygame.display.update()
            if var_clock == 6:
                screen.blit(image_5_am, (1266, 0))
                pygame.display.update()
            if var_clock == 7:
                screen.blit(image_7_am, (1266, 0))
                pygame.display.update()
                var_6_am = True
                var_clock = 1

我只是在我的主循环中调用这个子程序。我之前在我的其他子程序中的程序中使用过这种显示图像的方法,并且这些图像不闪烁。但由于某种原因,这些图像闪烁。

1 个答案:

答案 0 :(得分:1)

问题是由多次调用 pygame.display.update() 引起的。在应用程序循环结束时更新显示就足够了。多次调用 pygame.display.update()pygame.display.flip() 会导致闪烁。

从您的代码中删除对 pygame.display.update() 的所有调用,但在应用程序循环结束时调用一次:

while running:
   # [...] 

   pygame.display.update()