如何从pygame中的精灵表中删除精灵中的黑色背景

时间:2018-05-11 17:45:20

标签: python sprite

我正在尝试从精灵表中删除此精灵中的黑色背景。正如您在下面看到的是代码并在此帖子(Transparent spritesheet has black background)中建议,我尝试使用pygame.SRCALPHA标志,但这似乎不起作用。我甚至尝试使用透明背景转换后使用相同的精灵表,并在Mario精灵周围获得相同的黑色边框。

import pygame

pygame.init()

def imgcolorkey(image, colorkey):
    if colorkey is not None:
        if colorkey is -1:
            colorkey = image.get_at((0, 0))
        image.set_colorkey(colorkey, RLEACCEL)
    return image

class SpriteSheet(object):
    sprite_sheet = None
    def __init__(self, file_name):
        #self.sprite_sheet = pygame.image.load(file_name).convert()
        self.sprite_sheet = pygame.image.load(file_name,pygame.SRCALPHA)
    #self.sheet = load_image(filename)

    def imgat(self, rect, colorkey = None):
        rect = pygame.Rect(rect)
        #image = pygame.Surface(rect.size).convert()
        #image = pygame.Surface(rect.size, pygame.SRCALPHA ).convert()
        image = pygame.Surface(rect.size, pygame.SRCALPHA)
        #image.fill(transColor)
        image.blit(self.sprite_sheet, (0, 0), rect)
        return imgcolorkey(image, colorkey)

    def imgsat(self, rects, colorkey = None):
        imgs = []
        for rect in rects:
            imgs.append(self.imgat(rect, colorkey))
        return imgs

enter image description here

1 个答案:

答案 0 :(得分:0)

发现问题。

在我的主类中构建图像时,我没有发送colorkey参数为-1。

我改变了:

mario_image = SPRITE_SHEET.imgsat(MARIO_COORD)

为:

images = SPRITE_SHEET.imgsat(MARIO_COORD,-1)