如何在图片上使用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, 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会有点太长。

以上是 如何在图片上使用pygame set_alpha() 的全部内容, 来源链接: utcz.com/qa/401533.html

回到顶部