您可能遇到的另一个问题(除了猴子说的话)是您可能需要使用surface.convert()
它将图像转换为可以更改Alpha的形式。您可以执行以下任一操作。
image = pygame.image.load("logo.png")
image = image.convert()
要么
image = pygame.image.load("logo.png").convert()
我发现,尽管surface.convert_alpha()
应该做几乎相同的事情,但通常不起作用。尝试此测试代码进行检查。
import pygame, sys
pygame.init()
window=pygame.display.set_mode((1500, 800))
background=pygame.Surface((window.get_rect().width, window.get_rect().height))
background.fill((0, 0, 0))
image=pygame.image.load('InsertImageHere.png')
image=image.convert()
image2=pygame.image.load('InsertImage2Here.png')
image2=image2.convert_alpha()
rect=image.get_rect()
rect2=image2.get_rect()
rect2.left=rect.width+1
i=1
while True:
for event in pygame.event.get():
if event.type==12:
pygame.quit()
sys.exit()
image.set_alpha(i)
image2.set_alpha(i)
window.fill((255, 255, 255))
window.blit(background, background.get_rect())
window.blit(image, rect)
window.blit(image2, rect2)
pygame.time.delay(20)
i+=1
if i==255:
i=1
pygame.display.update()
在我的测试中,图像1逐渐消失,但是图像2一直保持黑暗。您应该自己尝试一下;您的计算机可能工作方式不同。
如果surface.convert_alpha()
对您有用,则应使用它,否则,请按照我之前说的做。这应该可以解决您的问题。
您还应该注意,我使用的pygame.time.delay(20)
不是以前的2000。如果要增加1的alpha值,则2000会有点太长。