이벤트 모델과 콜백

이벤트 모델 대신에 단순 콜백을 사용하는 것이 좋습니다.

ActionScript 3.0 이벤트 모델은 객체 전달의 개념에 기반합니다. 이벤트 모델은 객체 지향적이며 코드 재사용을 위해 최적화되어 있습니다. dispatchEvent() 메서드는 리스너 목록을 반복하며 등록된 각 객체에 대한 이벤트 핸들러 메서드를 호출합니다. 그러나 이벤트 모델의 단점 중 하나는 응용 프로그램의 수명 주기 동안 많은 객체를 만들 가능성이 높다는 것입니다.

타임라인에서 이벤트를 전달하여 애니메이션 시퀀스의 끝을 나타내야 한다고 가정해 보겠습니다. 알림을 수행하기 위해 다음 코드와 같이 타임라인의 특정 프레임에서 이벤트를 전달할 수 있습니다.

dispatchEvent( new Event ( Event.COMPLETE ) );

Document 클래스는 다음과 같은 코드 행을 사용하여 이 이벤트를 수신할 수 있습니다.

addEventListener( Event.COMPLETE, onAnimationComplete );

이 방식이 올바르긴 하지만, 기본 이벤트 모델을 사용하면 기존 콜백 함수를 사용하는 경우보다 속도가 느려지고 메모리 사용량이 많아질 수 있습니다. Event 객체를 만들어 메모리에 할당해야 하므로 성능이 저하됩니다. 예를 들어 Event.ENTER_FRAME 이벤트를 수신할 때 이벤트 핸들러에 대한 각 프레임에 새 이벤트 객체가 만들어집니다. 표시 객체의 경우 표시 목록이 복잡하면 리소스 사용량이 많은 캡처 및 버블링 단계로 인해 특히 성능이 저하될 수 있습니다.