首页 > 解决方案 > 为什么图像显示时会闪烁?

问题描述

我正在我的游戏中制作时钟。大约 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

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

标签: pythonimagepygame

解决方案


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

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

while running:
   # [...] 

   pygame.display.update()

推荐阅读