(Kreis-Animation)
(Animation vorzeitig beenden)
Zeile 80: Zeile 80:
  
 
== Animation vorzeitig beenden ==
 
== 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 <code>AnimationsManager</code> folgende Methode bereit:
 +
 +
<source lang="Java">
 +
public void animationBeendenVon(Raum r)
 +
</source>
 +
 +
Hierdurch werden '''alle''' Animationen des entsprechenden Objekts angehalten!

Version vom 14. Februar 2015, 18:31 Uhr

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!