我有一个超类Sprite和一个子类字符:
class Sprite(pygame.sprite.Sprite):
def __init__self(self,Image,position):
pygame.sprite.Sprite.__init__(self)
self.image =pygame.image.load(Image)
self.rect = self.image.get_rect()
self.rect.topleft = pos
class Character(Sprite):
character = pygame.sprite.Group()
def __init__(self):
self.finalimage = pygame.Surface([5, 5])
self.image = self.finalimage
self.rect = self.image.get_rect()
在Character类中,我有方法setimage和collision.I使用sprite类来检查一个字符是否与另一个字符冲突,例如:
sprite = Sprite(self.image,(self.x,self.y))
self.character.add(sprite)
pygame.sprite.spritecollide(sprite, Background.character, True)
所以我需要调用sprite类来进行冲突。我的问题是,当我尝试将图像提供给精灵类中的精灵时,这是我使用此类时保留的图像,当我从构造函数中提供图像对象时,我得到错误:
pygame.error:无法在此数据源中搜索
来自这一行:self.image = pygame.image.load(Image)
是否有一种覆盖/提供自己图像的简洁方法?显然我的逻辑不起作用。
提前致谢!
答案 0 :(得分:1)
self.image
必须是sprite = Sprite(self.image,(self.x,self.y))
中的文件名(或文件对象),但您似乎在self.image
中有表面
# class Character
self.finalimage = pygame.Surface([5, 5]) # finalimage is Surface
self.image = self.finalimage # finalimage is Surface so image is Surface
# ...
sprite = Sprite(self.image,(self.x,self.y)) # image is Surface
# class Sprite
def __init__self(self,Image,position): # so Image is Surface
# ...
self.image =pygame.image.load(Image) # so Image is Surface