Python 透明精灵片有黑色背景
我正在使用Python和Pygame开发一个游戏。我为其中一个敌人创建了一张精灵表,并让我的代码正常工作。问题是,即使是透明图像,图像似乎也有黑色背景。其代码如下:Python 透明精灵片有黑色背景,python,pygame,Python,Pygame,我正在使用Python和Pygame开发一个游戏。我为其中一个敌人创建了一张精灵表,并让我的代码正常工作。问题是,即使是透明图像,图像似乎也有黑色背景。其代码如下: enemySheet = pygame.image.load("resources/Alien.png").convert_alpha() transColor = (255,255,255) cells = [] for n in range(3): width, height=(3
enemySheet = pygame.image.load("resources/Alien.png").convert_alpha()
transColor = (255,255,255)
cells = []
for n in range(3):
width, height=(36,32)
rect = pygame.Rect(n * width, 0, width, height)
image = pygame.Surface(rect.size).convert_alpha()
image.blit(enemySheet, (0,0), rect)
cells.append(image)
enemyImg = cells[0]
enemyImg.set_colorkey(transColor)
enemy = enemyImg.get_rect()
enemy.center = (216,216)
我已经尝试了一些方法,但没有任何效果。欢迎任何想法。默认情况下,新曲面将填充黑色。如果要使其透明,可以在
transColor
(alpha值)中添加第四个数字,然后填充图像
transColor = (255,255,255,0)
# In the for loop.
image = pygame.Surface(rect.size).convert_alpha()
image.fill(transColor)
或者只需传递pygame.SRCALPHA
标志:
image = pygame.Surface(rect.size, pygame.SRCALPHA)
一个更好的解决方案是切割板材:
for n in range(3):
width, height = (36, 32)
rect = pygame.Rect(n * width, 0, width, height)
image = enemySheet.subsurface(rect)
cells.append(image)