Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 透明精灵片有黑色背景_Python_Pygame - Fatal编程技术网

Python 透明精灵片有黑色背景

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

我正在使用Python和Pygame开发一个游戏。我为其中一个敌人创建了一张精灵表,并让我的代码正常工作。问题是,即使是透明图像,图像似乎也有黑色背景。其代码如下:

    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)