ActionScript 3.0에서 시간 함수를 처리하는 좋은 방법은 지정된 시간 간격에 도달할 때마다 이벤트를 전달하는 Timer 클래스(flash.utils.Timer)를 사용하는 것입니다.
타이머를 시작하려면 먼저 Timer 클래스의 인스턴스를 생성하여 타이머 이벤트 생성 빈도 및 중단 시까지의 생성 횟수를 지정합니다.
예를 들어, 다음 코드는 매 초마다 이벤트를 전달하고 이 작업을 60초 동안 계속하는 Timer 인스턴스를 생성합니다.
var oneMinuteTimer:Timer = new Timer(1000, 60);
Timer 객체는 지정된 간격에 도달할 때마다 TimerEvent 객체를 전달합니다. TimerEvent 객체의 이벤트 유형은 timer(TimerEvent.TIMER 상수로 정의됨)입니다. TimerEvent 객체에는 표준 Event 객체와 동일한 속성이 들어 있습니다.
Timer 인스턴스가 고정된 간격 수로 설정된 경우에는 최종 간격에 도달할 때 timerComplete 이벤트(TimerEvent.TIMER_COMPLETE 상수로 정의됨)도 전달됩니다.
다음은 Timer 클래스의 작동을 보여주는 샘플 응용 프로그램입니다.
package
{
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class ShortTimer extends Sprite
{
public function ShortTimer()
{
// creates a new five-second Timer
var minuteTimer:Timer = new Timer(1000, 5);
// designates listeners for the interval and completion events
minuteTimer.addEventListener(TimerEvent.TIMER, onTick);
minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
// starts the timer ticking
minuteTimer.start();
}
public function onTick(event:TimerEvent):void
{
// displays the tick count so far
// The target of this event is the Timer instance itself.
trace("tick " + event.target.currentCount);
}
public function onTimerComplete(event:TimerEvent):void
{
trace("Time's Up!");
}
}
}
ShortTimer 클래스를 생성하면 5초 동안 1초에 한 번 작동하는 Timer 인스턴스가 생성됩니다. 그런 다음 타이머에 두 개의 리스너를 추가하여 하나는 각 틱(tick)을 수신하고 다른 하나는 timerComplete 이벤트를 수신하도록 합니다.
그러면 타이머 티킹이 시작되어 그 시점 이후부터 onTick() 메서드가 1초 간격으로 실행됩니다.
onTick() 메서드는 단순히 현재의 틱 카운트를 표시합니다. 5초가 지난 후에는 onTimerComplete() 메서드가 실행되어 시간이 종료되었음을 알립니다.
이 샘플을 실행하면 다음과 같은 행이 콘솔이나 추적 윈도우에 1초에 한 행씩 나타나는 것을 볼 수 있습니다.
tick 1
tick 2
tick 3
tick 4
tick 5
Time's Up!