尝试加载图像时使用 spritesheets 失败
Using spritesheets failed when trying to load an image
我正在制作一个小游戏来练习 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
这是class。下一个是我游戏中的加载数据功能class
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'
您永远不会在 Game
class 中调用 load_data
方法,因此您永远不会加载 spritesheet 并且游戏实例不会有 self.spritesheet
属性。只需在 Game
class 的 __init__
方法中调用它,它应该可以工作(只要没有其他问题)。
我正在制作一个小游戏来练习 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
这是class。下一个是我游戏中的加载数据功能class
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'
您永远不会在 Game
class 中调用 load_data
方法,因此您永远不会加载 spritesheet 并且游戏实例不会有 self.spritesheet
属性。只需在 Game
class 的 __init__
方法中调用它,它应该可以工作(只要没有其他问题)。