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!