有没有办法在一张图像和另一张图像之间创建平滑过渡?
假设我有图像 X 和图像 Y
ImageX = pygame.image.load('foo.png')
ImageY = pygame.image.load('oof.png')
当 W = 5 时,图像 X 变换为图像 Y 通常,我会在绘制代码中执行此操作:
if w == 5:
screen.blit(ImageY, (100, 100))
else:
screen.blit(ImageX, (100, 100))
但这只会使图像 X 被 ImageY 替换,一帧是 imageX,另一帧是 imageY
如何使 ImageX 顺利过渡到 ImageY?就像css中的transition属性一样。
最佳答案
您可以使用 set_alpha 为表面指定透明度 (0-255)
ImageX.set_alpha(128)
当您在 ImageY
之后 blit ImageX
时,您应该会看到两个图像。
blit(ImageY, ...)
blit(ImageX, ...)
您只需在循环中更改set_alpha()
(从255到0)即可获得平滑的效果。
if transparency > 0:
transparency -= 1
ImageX.set_alpha(transparency)
blit(ImageY, ...)
blit(ImageX, ...)
顺便说一句:可能要使用set_alpha()
图像必须使用convert()
,而不是convert_alpha()
。
查看我在 GitHub 上的示例:pygame - transparency
关于python - Pygame - 图像/表面的平滑变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47682103/