Inhaltsverzeichnis
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 Breitewidth
und der Höheheight
, 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 Methodenmove
undscale
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!