未定义全局名称“load_jpeg”

时间:2014-12-30 12:39:39

标签: python class pygame

我在加载程序全局名称'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()

1 个答案:

答案 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.xself.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()功能再次起作用。我希望这可以帮助你!