我正在尝试从精灵表中删除此精灵中的黑色背景。正如您在下面看到的是代码并在此帖子(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
答案 0 :(得分:0)
发现问题。
在我的主类中构建图像时,我没有发送colorkey参数为-1。
我改变了:
mario_image = SPRITE_SHEET.imgsat(MARIO_COORD)
为:
images = SPRITE_SHEET.imgsat(MARIO_COORD,-1)