Pyglet: Ändern des Bildes einer Sprite-Instanz beim Drücken einer Taste

Dieser Code zeigt das Bild assassin1.png auf einem schwarzen Hintergrund an. Sobald ich die Taste drücke, bewegt sich das Bild nach rechts und hört auf zu bewegen, sobald ich den Schlüssel loslasse.

Sobald ich den Schlüssel drücke, sollte es auch auf das Bild assassin2.png wechseln und wenn ich den Schlüssel loslasse, soll es wieder zu assassin1.png wechseln. Dieser Code zeigt jedoch nie das assassin2.png Bild beim Bewegen. Warum ist das so und wie kann ich das beheben?

 import pyglet class Assassin(pyglet.sprite.Sprite): def __init__(self, batch, img): pyglet.sprite.Sprite.__init__(self, img, x = 50, y = 30) def stand(self): self.img = pyglet.image.load("assassin1.png") return self def move(self): self.img = pyglet.image.load('assassin2.png') return self class Game(pyglet.window.Window): def __init__(self): pyglet.window.Window.__init__(self, width = 315, height = 220) self.batch_draw = pyglet.graphics.Batch() self.player = Assassin(batch = self.batch_draw, img = pyglet.image.load("assassin1.png")) self.keys_held = [] self.schedule = pyglet.clock.schedule_interval(func = self.update, interval = 1/60.) def on_draw(self): self.clear() self.batch_draw.draw() self.player.draw() def on_key_press(self, symbol, modifiers): self.keys_held.append(symbol) if symbol == pyglet.window.key.RIGHT: self.player = self.player.move() print "The 'RIGHT' key was pressed" def on_key_release(self, symbol, modifiers): self.keys_held.pop(self.keys_held.index(symbol)) self.player = self.player.stand() print "The 'RIGHT' key was released" def update(self, interval): if pyglet.window.key.RIGHT in self.keys_held: self.player.x += 50 * interval if __name__ == "__main__": window = Game() pyglet.app.run() 

One Solution collect form web for “Pyglet: Ändern des Bildes einer Sprite-Instanz beim Drücken einer Taste”

Ich schaute auf den Quycode des Pygletts und ich denke, das Problem ist hier:

 self.img = pyglet.image.load(... 

Das Bild wird in self.image Variable gespeichert, nicht self.img . So ändern sich zu:

 self.image = pyglet.image.load(... 

Sollte das Bild aktualisieren, das der Sprite verwendet.

  • Versuchen, über Sprite zu ziehen oder Bildpyglet zu wechseln
  • Schiebe-Sprites
  • Kann nicht ausziehen () sprites in pyglet
  • Python pygame blit-Funktion
  • Pygame - Sprite Bewegung verursacht Schichten
  • Wie füge ich eine Zeile als Sprite in Pygame hinzu?
  • Python ist die beste Programmiersprache der Welt.