我正在我的游戏中制作时钟。大约 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
我只是在我的主循环中调用这个子程序。我之前在我的其他子程序中的程序中使用过这种显示图像的方法,并且这些图像不闪烁。但由于某种原因,这些图像闪烁。
答案 0 :(得分:1)
问题是由多次调用 pygame.display.update()
引起的。在应用程序循环结束时更新显示就足够了。多次调用 pygame.display.update()
或 pygame.display.flip()
会导致闪烁。
从您的代码中删除对 pygame.display.update()
的所有调用,但在应用程序循环结束时调用一次:
while running:
# [...]
pygame.display.update()