我正在做一个小游戏来练习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
在
Game
类中从不调用load_data
方法,因此从不加载spritesheet,游戏实例也不会有self.spritesheet
属性。只要在Game
类的__init__
方法中调用它就可以了(只要没有其他问题)。你知道吗相关问题 更多 >
编程相关推荐