无法淡出文本 - PyGame

Unable to fade out text - PyGame

我正在尝试淡出屏幕上的一些文本,使用新表面的 set_alpha 函数。

我可以淡化 文本中,但是当使用此代码时:

label = myFont.render(textToFadeOut,1,(255,0,0))
newSurf = pygame.Surface(myFont.size(textToFadeOut))
newSurf.blit(label,(0,0))
for x in range (225):
    newSurf.set_alpha(225 - x)
    screen.blit(newSurf, (100,100))
    pygame.display.flip()
    pygame.time.delay(20)

淡出out文字不变

上面的代码基本上与我用来淡入(有效)的代码完全相同,唯一的区别是我使用 (225 - x) 而不是 x 来确保值逐渐变低。

我已经检查过 x 没有在其他任何地方使用,并且还打印出 (225 - x) 每个循环并且值确实变低了。

您没有在 blit 新表面之前清除框架。尝试填充背景颜色,然后再次 blit 文本。

for x in range(225):
    screen.fill((0,0,0))  #or whatever your background color is
    newSurf.set_alpha(225-x)
    screen.blit(newSurf, (100,100))
    pygame.display.flip()
    pygame.time.delay(20)

想一想,它适用于淡入,因为文本越来越暗,但它不适用于淡出,因为你在旧文本之上闪烁。