如何在图片上使用pygame set_alpha()
我正在为正在构建的项目使用pygame和python,并且在游戏首次打开时正在构建启动屏幕。我有一个要显示在初始屏幕上的.png文件,并决定将其从黑色淡入淡出。我发现做到这一点的最佳方法是通过将图像设置为Alpha设置。我编写了这段代码,但是它运行得非常慢(程序挂起30秒),并且没有给出Alpha值。仅在屏幕上显示图片。我究竟做错了什么?
screen = pygame.display.set_mode([1066,600])#Drawable surface
background = pygame.Surface(screen.get_size())
#Used for converting color maps
background = background.convert()
#Splashscreen
#image fades in
for i in range (225):
background.fill((0,0,0))
image = pygame.image.load("logo.png")
image.set_alpha(i)
logoimage = screen.blit(image,(0,0))
pygame.display.flip()
pygame.time.delay(2000)
#image fades out
#goes on to display main menu
回答:
您可能遇到的另一个问题(除了猴子说的话)是您可能需要使用surface.convert()
它将图像转换为可以更改Alpha的形式。您可以执行以下任一操作。
image = pygame.image.load("logo.png")image = image.convert()
要么
image = pygame.image.load("logo.png").convert()
我发现,尽管surface.convert_alpha()
应该做几乎相同的事情,但通常不起作用。尝试此测试代码进行检查。
import pygame, syspygame.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会有点太长。
以上是 如何在图片上使用pygame set_alpha() 的全部内容, 来源链接: utcz.com/qa/401533.html