개발을 하다보면 아직 라이브러리가 많지 않아서

중복되는 코드를 많이 쓰게 된다.

나는 그중에서 IEventDispatcher 가 제일 쓰기 귀찮다.

대략 아래와 참조.

package
{
     import flash.events.Event;
     import flash.events.IEventDispatcher;
     import flash.events.EventDispatcher;

     public class Sample implements IEventDispatcher
     {
          private var dispatcher:EventDispatcher = new EventDispatcher();
         
          public function hasEventListener(type:String):Boolean
          {
               return this.dispatcher.hasEventListener.apply(null, arguments);
          }
         
          public function willTrigger(type:String):Boolean
          {
               return this.dispatcher.willTrigger.apply(null, arguments);
          }
         
          public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0.0, useWeakReference:Boolean=false):void
          {
               this.dispatcher.addEventListener.apply(null, arguments);
          }
         
          public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void
          {
               this.dispatcher.removeEventListener.apply(null, arguments);
          }
         
          public function dispatchEvent(event:Event):Boolean
          {
               return this.dispatcher.dispatchEvent.apply(null, arguments);
          }
         
     }
}

저걸 매번 타이핑한다고 생각해보자...

어후... 아무리 Code Assist 가 된다지만 저걸 일일이 타이핑하는건

능률저하를 일으키는 요인이 아닐수 없다.

저렇게 일일이 타이핑해야한다는 생각에

Interface 사용을 자제할지도 모른다는 생각까지도 든다.

그래서 include 구문을 이용해서 간단하게 줄여보자.

일단 아래와 같은 텍스트 파일을 만든다.

나 같은 경우에는 확장자명을 source 라고 했다.

어차피 컴파일할때만 쓰이는 파일이기 때문에 나만 알아보면 된다^^

/**
*
* Implements IEventDispatcher
*
* */


import flash.events.EventDispatcher;
import flash.events.Event;

private var dispatcher:EventDispatcher = new EventDispatcher();

public function hasEventListener(type:String):Boolean
{
     return this.dispatcher.hasEventListener.apply(null, arguments);
}

public function willTrigger(type:String):Boolean
{
     return this.dispatcher.willTrigger.apply(null, arguments);
}

public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0.0, useWeakReference:Boolean=false):void
{
     this.dispatcher.addEventListener.apply(null, arguments);
}

public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void
{
     this.dispatcher.removeEventListener.apply(null, arguments);
}

public function dispatchEvent(event:Event):Boolean
{
     return this.dispatcher.dispatchEvent.apply(null, arguments);
}

그리고 위 내용이 적힌 파일을 IEventDispatcher.source 라고 저장한다.

메모장에다 해도 상관없다.

그리고 경로를 잘 만들어둔다.

나 같은 경우에는 pro/events/ 폴더 안에 위치했다.

그리고 적용할 클래스는 pro/fonts/ 안에 위치해있다.

자 본문에는 아래와 같이 쓰면 된다.

package pro.fonts
{
     import flash.events.IEventDispatcher;
    
     public class RSF implements IEventDispatcher
     {
          public function RSF(singletoneEnforcer:SingletoneEnforcer){}
         
          include "../events/IEventDispatcher.source";
     }
}

이렇게 하면 Flex 에서도 include 구문을 지원하기 때문에

오류 없이 잘 사용할 수 있다.

-_-)b

+ Recent posts