Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:spiele:sprites

Dies ist eine alte Version des Dokuments!


Sprites

Sprites (aus dem Englischen: Elfe, Kobold, Wicht) sind Bitmap-Grafiken, die direkt von der Grafikkarte auf den Bildschirm gezeichnet werden und daher den Hauptprozessor des Rechners kaum beanspruchen. Von vielen Betriebssystemen wird beispielsweise der Mauszeiger oder der Textcursor durch ein Sprite dargestellt, auch in vielen (v.a. zweidimensionalen) Computerspielen finden sie Verwendung.

Beispiel 1: Raumschiff und Smilies

Ein Sprite wird durch die Angabe der x- und y-Koordinate seines „Mittelpunktes“, des Namens der Bilderfolge und des Index innerhalb dieser Folge instanziert.

new Sprite(400, 300, SpriteLibrary.Ship_1, 0);

etwa instanziert ein Sprite, das das erste (index == 0) Bild der Bilderfolge „Ship_1“ darstellt.

Übersicht über die Bilderfolgen

Animation von Sprites

Es gibt Bilderfolgen, die - schnell hintereinander abgespielt - einen kleinen „Film“ (Animation) ergeben. Diese Animationen kann man mit der Methode playAnimation abgespielt werden.

Sprite explosion = new Sprite(400, 300, SpriteLibrary.Explosion_1, 0);
explosion.playAnimation(0, 63, RepeatType.loop, 15);

Spielt die Bilder mit den Indizes 0 bis 63 (jeweils einschließlich) mit der Geschwindigkeit 15 Bilder pro Sekunde ab, wobei nach dem 63. Bild die Animation wieder von vorne begonnen wird (RepeatType.loop).

Kollision

Wie bei allen anderen Grafikobjekten kann auch bei Sprites mit er Methode collidesWith ausgewertet werden, ob ein Sprite mit einem anderen Objekt überlappt. Soll die Kollision mit vielen gleichartigen Objekten ausgewertet werden, so empfiehlt es sich aus Performancegründen, diese Objekte in einer Gruppe zusammenzufassen und die Kollision mithilfe der Methode getCollidingShapes der Gruppe zu suchen.

Tiled Sprites

  • Die Methode makeTiling(double width, double height) macht aus einem Sprite eine „Kachelfläche“ der Breite width und der Höhe height, indem das Sprite-Bild geeignet oft neben- und untereinander gezeichnet wird.
  • Alle Methodenaufrufe des Sprites (z.B. move, scale, …) beziehen sich auf die Kachelfläche als Ganzes.
  • Möchte man die einzelnen Kachelbilder verändern, so erhält man mit der Methode getTileImage() ein Objekt, das einem geeignete Methoden move und scale hierzu bietet.
  • Die Methode getTileImage().move(double dx, double dy) verschiebt die Bilddaten um die angegebene Verschiebung und fügt sie zyklisch in der gegenüberliegenden Richtung wieder an. Dadurch entsteht ein Scroll-Effekt. Starte am besten das nachfolgende Beispielprogramm, dann siehst Du sofort, was gemeint ist!

Sprite als Hintergrundbild setzen

Die Methode setAsBackgroundImage() skaliert und verschiebt das Sprite so, dass es den gesamten Hintergrund gerade überdeckt. Zudem setzt sie das Bild in der Zeichenreihenfolge nach hinten, so dass es von allen anderen graphischen Objekten überdeckt wird. Die Skalierung erfolgt in x- und y-Richtung gleichartig, damit das Bild nicht verzerrt erscheint. Falls das Bild also ein anderes Seitenverhältnis hat als die Zeichenfläche, lässt die Methode rechts oder unten ein Stück des Bildes überstehen.

api/documentation/spiele/sprites.1743925932.txt.gz · Zuletzt geändert: 2025/04/06 07:52 von martin