Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:spiele:sprites

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!
api/documentation/spiele/sprites.txt · Zuletzt geändert: 2024/08/31 15:54 von martin