2014-09-22 8 views
0

Alors, j'utiliser cette classe dans mon jeu:pygame.sprite.Sprite.kill() ne fonctionne pas correctement. Pourquoi?

class Magazine(pygame.sprite.Sprite): 
    def __init__(self, image, shooter): 
     self.image = image 
     self.rect = image.get_rect() 
     self.rect.x = shooter.rect.x 
     self.rect.y = shooter.rect.y - shooter.image.get_height() 

    def update(self): 
     self.rect.y -= 5 
     if self.rect.y <= 0 - self.image.get_height(): 
      self.kill() 

Après avoir créé cette classe, j'ai fait un élément de cette classe. Ensuite, j'ai appelé sa fonction de mise à jour:

magazine = Magazine(magazineImage, forry) 
magazine.update() 

Pour une raison quelconque, je reçois cette erreur:

Traceback (most recent call last): 
    File "main.py", line 106, in <module> 
    main() 
    File "main.py", line 78, in main 
    projectileObject.update() 
    File "/Users/number1son100/Desktop/Famous Monsters Game/gameobjects.py", line 117, in update 
    self.kill() 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/sprite.py", line 174, in kill 
    for c in self.__g.keys(): 
AttributeError: 'Magazine' object has no attribute '_Sprite__g' 

Répondre

1

Ok, donc tout ce que vous devez faire est, si vous allez utiliser les fonctions qui viennent avec la classe de sprite, vous devez d'abord insérer:

super(spritename, self).init() 

donc, pour cela, vous devez insérer:

super(Magazine, self).init() 

dans votre fonction init.

Questions connexes