Tutorials/Animationen
Inhaltsverzeichnis
Ziel des Tutorials
Die Engine Alpha bietet dir verschiedene Möglichkeiten, deine Objekte animiert zu bewegen. Nach dem Abschluss dieses Tutorials kennst du die verschiedenen Animations-Arten und kannst damit jedes Grafik-Objekt animieren.
Animations-Arten
Es gibt folgende Animations-Arten:
- Geraden-Animation
Animiert ein Objekt auf einer einfachen Halbgerade - Kreis-Animation
Animiert ein Objekt auf einer Kreisbahn um ein Zentrum - Strecken-Animation
Animiert ein Objekt auf einem Polygonzug (Zickzack-Linie)
Animationen werden von der Klasse AnimationsManager
zur Verfügung gestellt. Die Klasse Game
stellt eine Referenz auf das AnimationsManager-Objekt zur Verfügung. Es gibt nur eine einzige Instanz des AnimationsManagers (Singleton).
Geraden-Animation
Für die Geraden-Animation steht folgende Methode der Klasse AnimationsManager
zur Verfuegung:
public void geradenAnimation(Raum r, Punkt p, int zeit_bis_Punkt, int animations_Zeit)
Dabei wird das Objekt r in Richtung des Punktes p geradlinig bewegt. Der dritte Parameter steht für die Zeit in Millisekunden, bis r bei p angekommen ist. Der vierte Parameter gibt die Zeit in Millisekunden an, wie lange die Animation insgesamt dauern soll.
Beispiele:
manager.geradenAnimation(r, p, 1000, 1000);
... bewegt das Objekt r in einer Sekunde von seinem ursprünglichen Ort bis zum Punkt p. Dort endet die Animation dann und r hat p als Mittelpunkt.
manager.geradenAnimation(r, p, 1000, 3000);
... bewegt das Objekt r in einer Sekunde von seinem ursprünglichen Ort Richtung p. Die Animation geht aber noch zwei Sekunden lang weiter. R hat dann die dreifache Strecke von seinem ursprünglichen Ort bis p zurück gelegt.
manager.geradenAnimation(r, p, 1000, 500);
... würde das Objekt r in einer Sekunde von seinem ursprünglichen Ort bis zum Punkt p bewegen. Da die Animation aber nur 500ms lang dauern soll, bleibt r auf halbem Weg Richtung p stehen.
Es gibt auch verkürzte Methodenaufrufe, die in der Dokumentation genauer beschrieben werden.
Kreis-Animation
Für die Kreis-Animation steht folgende Methode der Klasse AnimationsManager
zur Verfuegung:
public void kreisAnimation(Raum r, Punkt m, boolean loop, int umlaufdauer, boolean im_uhrzeigersinn )
Dabei wird das Objekt r um den Punkt m im Kreis gedreht. Der Punkt m ist dabei der Mittelpunkt der Animation. Der Animations-Radius ergibt sich aus dem ursprünglichen Abstand des Mittelpunkts von r zum Rotations-Zentrum m. Ist der dritte Parameter true, so erfolgt die Drehung endlos (loop), bei false erfolgt genau eine Umdrehung. Der vierte Parameter gibt die Zeit einer Umdreheung (Umlaufdauer) in Millisekunden an. Ist der letzte Parameter true, so wird im Uhrzeigersinn gedreht, bei false gegen den Uhrzeigersinn.
Beispiele:
manager.kreisAnimation(r, p, false, 5000, false);
... dreht das Objekt r in 5 Sekunden einmal um den Punkt p. Nach einer Umdrehung endet die Animation (dritter Parameter: loop=false). Die Drehung erfolgt gegen den Uhrzeigersinn (letzter Parameter: im_uhrzeigersinn=false).
manager.kreisAnimation(r, p, false, 5000, true);
... dreht das Objekt r in 5 Sekunden einmal um den Punkt p. Nach einer Umdrehung endet die Animation (dritter Parameter: loop=false). Die Drehung erfolgt im Uhrzeigersinn (letzter Parameter: im_uhrzeigersinn=true).
manager.kreisAnimation(r, p, true, 5000, false);
... dreht das Objekt r in 5 Sekunden um den Punkt p. Es wird nach unendlich lange weiter gedreht (dritter Parameter: loop=true). Die Drehung erfolgt gegen den Uhrzeigersinn (letzter Parameter: im_uhrzeigersinn=false).
Es gibt auch verkürzte Methodenaufrufe, die in der Dokumentation genauer beschrieben werden.
Strecken-Animation
Animation vorzeitig beenden
Endlose Kreis-Animationen können natürlich wieder angehalten werden. Jede endliche Animation kann aber auch vorzeitig beendet werden.
Hierzu stellt die Klasse AnimationsManager
folgende Methode bereit:
public void animationBeendenVon(Raum r)
Hierdurch werden alle Animationen des entsprechenden Objekts angehalten!