构建图像和加载

时间:2013-12-10 13:15:02

标签: python pygame

我有一个超类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)

是否有一种覆盖/提供自己图像的简洁方法?显然我的逻辑不起作用。

提前致谢!

1 个答案:

答案 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