====== Scrollen, Zoomen (Transformation des Welt-Koordinatensystems) ======
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.
===== Demo-Programm zu World-Transformationen und setStatic =====
Steuere das Raumschiff mit den **Pfeiltasten nach links/rechts**!
===== Demo-Programm zur Methode follow =====
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:
* Figur - Die Figur, die ins Zentrum gerückt werden soll
* margin - Das Koordinatensystem wird nicht verschoben, wenn die Figur sichtbar und mindestens ''margin'' von allen Rändern entfernt ist.
* xMin - Das Koordinatensystem wird höchstens so weit nach links verschoben, dass der linke Rand die x-Koordinate xMin hat.
* xMax - Das Koordinatensystem wird höchstens so weit nach rechts verschoben, dass der rechte Rand die x-Koordinate xMax hat.
* yMin - Das Koordinatensystem wird höchstens so weit nach oben verschoben, dass der obere Rand die y-Koordinate yMin hat.
* yMax - Das Koordinatensystem wird höchstens so weit nach unten verschoben, dass der untere Rand die y-Koordinate yMax hat.
\\ **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**!
===== Zyklisch-parallaktisches Scrollen =====
{{ youtube>mRgC7BJcK78?large }}