본문 바로가기

Flash/ActionScript 3.0

[MissFlash의 ActionScript 3.0] 1.5 Handling Events

* 본 포스트는 "Joey Lott의 ActionScript 3.0 Cookbook"의 내용을 정리, 가공한 것입니다.
* 본 포스트를 퍼가실 때는 상단에 아래와 같이 원본출처를 명시해 주세요! ^^
원본 : http://blog.missflash.com/
출처 : MissFlash.com, http ://www.missflash.com/
* 포스트의 내용중 일부가 추가/수정될 수 있으므로 최신 내용을 접하고 싶으신 분은 원본글을 이용하시기 바랍니다.

1.5 Handling Events

Problem
여러분이 어떤 코드를 반복적으로 실행하고 싶을 때

Solution
enterFrame 이벤트에 listener를 추가하고 핸들러로써 메소드를 할당합니다.

Discussion
enterFrame 이벤트에 응답하기 위해 여러분은 여러분의 프로그램이 그 이벤트를 들을 수 있게 말해줘야 합니다. 그리고, 이벤트가 일어났을 때 어떤 메소드가 호출되기를 원하는지 결정해야 합니다. addEventListener라는 메소드를 이용해 이것을 할 수 있습니다.
addEventListener(type:String, listener:Function)

예로, 다음과 같이 작성할 수 있습니다.
addEventListener(Event.ENTER_FRAME, onEnterFrame);

1) type
프로그램이 듣기를 희망하는 이벤트의 타입을 의미합니다.

2) listener
클래스의 또다른 메소드를 의미합니다.

실제 예를 살펴볼까요?

package {
    import flash.display.Sprite;
    import flash.events.Event;

    public class MF_Flex extends Sprite
    {
        public function MF_Flex()
        {
            graphics.lineStyle(1,1,1);
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
       
        private function onEnterFrame(event:Event):void
        {
            graphics.lineTo(Math.random()*100, Math.random()*100);
        }
    }
}


위 예에서는 onEnterFrame() 즉, 메인무비(무비클립)의 시작과 동시에 랜덤한 선을 계속 긋습니다. 이 전의 예들이 특정 개수의 선을 모두 그린 결과만 보여줬다면(사실은 하나하나 그려가는 과정이지만, 우리가 인식하지 못할 짧은 수간에 선을 그려나가는 과정을 모두 마쳐서 결과만 보이는 것으로 느껴짐), 위 예는 선이 하나씩 늘어가는 것을 볼 수 있습니다.

이 처럼 일정시간동안 우리가 원하는 일을 반복해서 수행하고자 할 때 onEnterFrame() 함수를 사용할 수 있습니다.

사용자 삽입 이미지