Animation mit dem Timer Objekt in AS 3
Animationen mit Flash zu erstellen ist nicht schwer. Man setzt einfach 2 Schlüsselbilder in die Zeitleiste, verschiebt den gewünschten Movieclip und schon hat man eine saubere Animation.
Wie aber sieht es aus, wenn man das ganze mit Actionscript erreichen will. Mit AS 2 hatte man da noch die Möglichkeit über setInterval()
oder onEnterFrame()
, eine gewünschte Funktion immer wiederkehrend aufzrufen. Das kann man natürlich auch noch mit AS 3. Neu in AS 3 ist aber die Klasse Timer. Diese erlaubt ebenfalls das wiederholte Aufrufen einer Funktion und ersetzt dank vieler neuen Features quasi setInterval()
. Die Klasse selbst findest du unter flash.utils
.
Und so gehts:
1. Timer Objekt erstellen:
var timer:Timer = new Timer(Zeitverzögerung, Wiederholungen);
Zeitverzögerung wird hierbei in Millisekunden angegeben und Wiederholungen bedeutet die maximale Anzahl an Wiederholungen bevor der Timer endet.
2. Event Listener erstellen, der die entsprechende Funktion aufruft:
timer.addEventListener(TimerEvent.TIMER, funktionsname);
TimerEvent
kennt zwei Ereignisse: TIMER
fängt jede Wiederholung ab, TIMER_COMPLETE
wird einmal ausgeführt, wenn der Timer das Ende erreicht hat.
3.Timer starten:
timer.start();
Hier noch ein Beispiel anhand eines beliebigen Movieclips mit dem Instanznamen “mc”.
var timer:Timer = new Timer(20, 200);
timer.addEventListener(TimerEvent.TIMER, moving);
timer.start();
function moving(evt: TimerEvent){
mc.x += 3;
if(mc.x >= Stage.stageWidth){
timer.stop();
}
}
Darüber hinaus gibt es noch die Methode reset()
, die den Timer zurücksetzt und currentCount
, die ausliest bei wievielen Wiederholungen sich der Timer gerade befindet. running
gibt true
oder false
zurück, je nachdem ob der Timer gerade läuft oder nicht.