尝试加载图像时使用spritesheets失败

时间:2017-11-24 14:51:49

标签: python image pygame load sprite

我正在制作一个小游戏来练习pygame中的编程。当我尝试使用spritesheet时,我遇到了一个错误。我试图解决它,但我不知道问题是什么。

class Spritesheet:
    # loading and parsing spritesheets

    def __init__(self, filename,game):
        self.spritesheet = pygame.image.load(filename).convert()

    def get_image(self, x, y, width, height):
        # take an image from the spritesheet
        image = pygame.Surface((width,height))
        image.blit(self.spritesheet, (0,0), (x, y, width, height))
        return image

这是班级。下一个是我的游戏类中的加载数据函数

    def load_data(self):
        # ------------- load --------------
        self.dir = path.dirname(__file__)
        img_dir = path.join(self.dir, 'img')

        # load the spritesheet
        self.spritesheet = Spritesheet(path.join(img_dir, SPRITESHEET))

SPRITESHEET在设置文件中单独定义。在这里,我调用该函数并尝试从中获取图像。这是我收到错误的地方。

    def __init__(self,game):

        pygame.sprite.Sprite.__init__(self)

        # use surface to create image
        self.game = game
        self.image = self.game.spritesheet.get_image(614,1063,120,191)
        self.rect = self.image.get_rect(x=50, y=399 )

错误讯息:self.image = self.game.spritesheet.get_image(614,1063,120,191) AttributeError: 'Game' object has no attribute 'spritesheet'

这是完整的项目:https://github.com/Frago23/Frago1321

1 个答案:

答案 0 :(得分:0)

您永远不会在load_data课程中调用Game方法,因此您永远不会加载spritesheet,而游戏实例也不会拥有self.spritesheet属性。只需在__init__类的Game方法中调用它,它就可以工作(只要没有其他问题)。