Timer
Ein Timer ermöglicht das verzögerte und ggf. mehrmalige Ausführen einer bestimmten Funktion. Ein Timer wird in AS3
mittels der Klasse Timer
dargestellt (Package flash.utils
). Dem Konstruktor wird die Wartezeit
bzw. Dauer zwischen den Timerereignissen in Millisekunden (Eigenschaft delay
) und die Anzahl der Wiederholungen
(Eigenschaft repeatCount
) übergeben. Der zweite Parameter ist dabei jedoch optional. Beim Zuweisen des Wertes
0
der Eigenschaft repeatCount
, läuft der Timer sozusagen endlos. 0
ist dabei der
Standardwert. Auf Grund einer technischen Begrenzung kann der Timer jedoch trotzdem maximal ca. 24 Tage laufen (bei der
schnellstmöglichen Ausführung von 1ms). Über die Eigenschaft currentCount
kann abgerufen werden, wie oft der
Timer bereits ausgeführt wurde. Mittels der running
-Eigenschaft kann zudem abgerufen werden, ob der Timer aktuell
läuft oder nicht. Um einen Timer zu starten, rufen wir lediglich die Funktion start()
auf. Ein Aufruf der
stop()
-Funktion hält den Timer an. Wollen wir den Timer anhalten und dabei zusätzlich den Zähler für die
Ausführungen zurücksetzen, so können wir die Funktion reset()
aufrufen. Der Timer verfügt über zwei Events,
welche mittels der bekannten Funktion addEventListener()
registriert werden können: TIMER
und
TIMER_COMPLETE
. Das TIMER
-Event tritt nach jedem Ablauf der angegebenen Zeit auf. Das
Ereignis des TIMER_COMPLETE
-Events tritt auf, wenn der Timer „abgelaufen“ ist. Dies ist der Fall, wenn der
Timer so oft wie angegeben ausgeführt wurde.
private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); var zaehler:Timer = new Timer(50, 25); zaehler.addEventListener(TimerEvent.TIMER, onTick); zaehler.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); zaehler.start(); } private function onTick(e:TimerEvent):void { graphics.beginFill(0xFF0000); graphics.drawRect(20 * e.target.currentCount, 20 * e.target.currentCount, 80, 80); graphics.endFill(); } private function onTimerComplete(e:TimerEvent):void { graphics.beginFill(0x0000FF, 0.25); graphics.drawRect(20, 20, 560, 560) graphics.endFill(); }