오늘 AS3로 무비클립의 특정 프레임으로 이동하는 모션 클래스를 제작하다가
Timer 클래스의 버그인줄 알고 Timer 관련 레퍼런스를
찾아보니 버그가 아니라 설정된 기능이었다.
보통 Timer 클래스를 정의하여 사용할 때 두 개의 파라미터를 전달하게
되는데 그 첫 번째는 handler 메소드의 실행 간격을 정의하는
Delay고 두 번째 파라미터는 몇 번을 실행할 것인가를 나타내는 repeatCount:int 다. 아래의 코드는 1초 간격으로 5번
handler 메소드를 실행하게 된다.
var timer:Timer = new Timer(1000, 5);
위 코드에서 두 번째 파라미터 값이 –값을 갖게 되면 한번 실행되고
종료하지만 0 값을 갖게 되면 무한히 handler 메소드를
실행하며 currentCount값도 무한하게 증가한다. repeatCount의 default값이 0이기 때문에 두번째 파라미터를 설정하지 않을 경우도
stop() 메소드로 Timer이벤트를 종료할 때가지 실행하게
된다.
import flash.utils.Timer;
import flash.events.TimerEvent;
var timer:Timer = new Timer(30, 0); // or new Timer(30);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
function timerHandler(evt:Event):void{
trace(evt.currentTarget.currentCount);
}
런타임시 스크립트상에서 repeatCount로 전달되는 파라미터 값이 0의 값을 갖게 될 때는 주의해서 Timer 이벤트를 종료해 줄 필요가
있다.