[Actionscript] 사용자 정의 EventListener 만들기

Development ETC

[Actionscript] 사용자 정의 EventListener 만들기

이벤트리스너는 액션스크립트에서 어떤 상황이 일어났을 때 뭔가 다른 행동을 할 수 있게 알려주고 호출한다.
이벤트리스너를 이용하여 각 요소의 애니메이션이나 상황의 타이밍을 제어할 수 있다. 타이밍 뿐만 아니라 모든지다.

Event클래스 속에서는 지정된 이벤트 뿐이다. 대표적으로 COMPLETE이벤트정도...
하지만 한 클래스에 같은 이름으로 다른 메서드에서 사용하면 동일한 이벤트로 호출될 것이다. 다르게 말하면 1명의 부모에서 자식이 2,3,4명 다르지만 다 다른자식이 되어야한다. 성격이나 말도 틀릴것이다.
이 이벤트로서의 자식들을 개별적으로 임의로 만들어 줄 수 있다.

부모 클래스

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

  public class Console extends Sprite {
    public function Console():void {
      var game:Game = new Game();
      game.addEventListener(Game.GAME_OVER, gameOverListener);
    }

    private function gameOverListener(e:Event):void {
      trace("game over");
    }
  }
}

자식 클래스

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

  public class Game extends Sprite {
    public static const GAME_OVER:String = "gameOver";

    public function Game():void {
      // 할일 하고 다 끝냈으면...
      dispatchEvent(new Event(Game.GAME_OVER));
    }
  }
}

주의사항

  • 자식 클래스에서 import불러오는 클래스는 flash.events.EventDispatcher이다. 상속되게는 해줘야한다.
  • 부모 클래스에서 addEventListener을 사용할때 Event.COMPLETE와는 다른 Class.CLASSNAME 으로 호출한 자식 클래스이름.이벤트이름으로 지정해줘야한다.
  • const로 된 상수는 전부 대문자이며 단어 구분은 언더바(_)로 사용해주는것이 좋다.