Das World
-Objekt besitzt Methoden, die das Koordinatensystem transformieren. Damit lassen sich Effekte wie Scrollen und Zoomen auf alle graphischen Objekte gleichzeitig anwenden.
move(x, y)
ändert das Koordinatensystem so, dass alle graphischen Objekte um x
nach rechts und y
nach unten verschoben erscheinen.rotate(winkel, x, y)
ändert das Koordinatensystem so, dass alle graphischen Objekte um den angegeben Winkel (in Grad) nach rechts gedreht erscheinen. Drehpunkt ist dabei der Punkt (x, y). scale(factor, x, y)
ändert das Koordinatensystem so, dass alle graphischen Objekte um den angegeben Faktor gestreckt erscheinen. Zentrum der Streckung ist dabei der Punkt (x, y). setCoordinateSystem(left, top, width, height)
ändert das Koordinatensystem so, dass die linke obere Ecke des Grafikausgabebereichs die Koordinaten (left/top) besitzt und die rechte untere Ecke die Koordinaten (left + width, top + height).
Statische Elemente:
Oft möchte man Anzeigen für Punkte, Leben usw. darstellen, die immer am selben Platz erscheinen sollen. Für diese Zwecke besitzt jedes graphische Element die Methode setStatic(boolean)
. Sie bewirkt, dass das graphische Element durch die obigen Methoden nicht verändert wird.
Der Spielerfigur folgen:
Soll die Welt immer so scrollen, dass sie der Spielerfigur folgt, so erreicht man dies mit der Methode followShape
des World-Objekts. Details siehe im Beispiel ganz unten.
Steuere das Raumschiff mit den Pfeiltasten nach links/rechts!
Die Methode follow
des World-Objekts bewirkt, dass das Welt-Koordinatensystem so verschoben wird, dass eine bestimmte Figur ins Zentrum gerückt wird. Sie benötigt folgende Parameterwerte:
margin
von allen Rändern entfernt ist.
VORSICHT:
Die Methode verschiebt das Welt-Koordinatensystem nur ein einziges Mal. Soll die Welt einer Spielfigur folgen, so muss diese Methode immer wieder aufgerufen werden. Am besten platzierst Du sie dazu in der act
-Methode der Spielfigur.
Tipp:
Die Koordinaten der linken oberen Ecke des sichtbaren Bereichs bekommst Du mit den Methoden getTop
und getLeft
des world-Objekts, seine Breite mit getWidth
und seine Höhe mit getHeight
.
Vielen Dank an Jürgen Horzella für die Programmvorlage!
Steuere den Helden mit den Pfeiltasten!