我试图在屏幕上淡出一些文字,使用带有新表面的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)并且值会降低。
答案 0 :(得分:2)
在blitting新曲面之前,您没有清除帧。尝试填充背景颜色,然后再次打开文本。
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)
考虑一下,它适用于淡入,因为文字变得越来越暗,但它不适用于淡出,因为你在旧文本之上进行blitting。