我正在制作一个小游戏来练习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'
答案 0 :(得分:0)
您永远不会在load_data
课程中调用Game
方法,因此您永远不会加载spritesheet,而游戏实例也不会拥有self.spritesheet
属性。只需在__init__
类的Game
方法中调用它,它就可以工作(只要没有其他问题)。