我在加载程序全局名称'load_jpeg'时没有定义此错误 在运行我的班级代码时。
class Hero:
def __init__(self,x,y):
self.x=x
self.y=y
self.width=70
self.height=70
self.image = pygame.image.load('ezio.jpg')
self.rect = self.image.get_rect()
答案 0 :(得分:0)
pygame.blit()
无效的事实非常清楚,与load_jpeg
相同。首先,load_jpeg
错误。就像Martijn Pieters所说的那样,你不能只创建Python最初没有的功能。也许你可以用这个名字写一个特定的函数,但事实并非如此。第二,pygame.blit()
。要使用此函数,您需要在其中包含两个参数。为了能够做到这一点,您可能想要更改您的班级:
class Hero(pygame.sprite.Sprite):
def __init__(self, location, image_file):
pygame.sprite.Sprite.__init__(self)
self.rect.top, self.rect.left = location #The equivalent as self.x and self.y
self.width = 70
self.height = 70
self.image = pygame.image.load(image_file)
self.rect = self.image.get_rect()
并添加此行(如果您尚未在课程之外和while循环之前完成此操作):
Heroes = Hero([100, 100], 'ezio.jpg')
这将创建一个可用于pygame.blit()
函数的变量。通常,self.rect.top, self.rect.left = location
比定义self.x
和self.y
更好。它通常更像是一个带有rects的PyGame风格。看起来您要将__init__
转换为精灵并定义self
。完成此操作后,pygame.blit()
应该可以正常工作。如果该类的变量名称是 x ,则必须始终按此顺序执行:
pygame.blit(x.image, x.rect)
首先使用x.image
,然后使用x.rect
。在您的情况下,该行应如下所示:
pygame.blit(Heroes.image, Heroes.rect) #Assuming the variable name is Heroes
此答案应取消您的错误并使pygame.blit()
功能再次起作用。我希望这可以帮助你!