尝试加载imag时使用精灵表失败

2024-06-28 09:44:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个小游戏来练习pygame的编程。当我试图使用精灵表时,我遇到了一个错误。我本来想修的,但我不知道有什么问题。你知道吗

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

这是班级。下一个是game类中的load data函数

    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


Tags: pathimageselfgameimggetinitdef
1条回答
网友
1楼 · 发布于 2024-06-28 09:44:37

Game类中从不调用load_data方法,因此从不加载spritesheet,游戏实例也不会有self.spritesheet属性。只要在Game类的__init__方法中调用它就可以了(只要没有其他问题)。你知道吗

相关问题 更多 >