본문 바로가기

삽질하기/Flex

Flex 사용자정의 Event 와 EventDispatcher의 사용

반응형

package user.event
{
   import flash.events.Event;

   public class UserEvent extends Event {
      public static const USER_EVENT:String = "USER_EVENT";
     
      public var arg1:String;
      public var arg2:int;
       
      public function UserEvent(type:String, arg1:String, arg2:int) {
         super(type, false, false);
         this.arg1 = arg1;
         this.arg2 = arg2;
      }
   }
}


//Event를 상속받은 클래스를 생성한다.
//이벤트명을 지정하고 Event 발생시 사용할 변수들을 선언한다.


package user.event
{
   import flash.events.EventDispatcher;
   import mx.controls.Alert;
 
   public class UserEventDispatcher extends EventDispatcher {
      private static var instance:UserEventDispatcher;
 
      public function UserEventDispatcher() {
         dispatch();
      }

      public function dispatch():void {
         var arg1:String = "one,two,three,four";
         var arg2:int = 1234;

         dispatchEvent(new UserEvent(UserEvent.USER_EVENT, arg1, arg2));
      }
   }
}


//dispatchEvent호출시 해당 Event객체를 생성하고 Event 발생시 필요한 값을 인자로 넘긴다.

package user.event
{
   public class Test {
      private var userEvent:UserEvent;
      private var flag:Boolean = true;

      public function Test() {
         userEvent.addEventListener(UserEvent.USER_EVENT, userEventHandler);

         if(flag) {
            userEvent = new UserEvent();
         }
      }
   }
  
   private function userEventHandler(event:UserEvent):void {
      Alert.show(event.arg1 + event.arg2);
   }
}

//리스너를 등록하고 특정 조건이 발생할 경우 UserEventDispatcher객체를 생성하여 이벤트를 발생시킨다.
//Event 발생시 이벤트 핸들러가 호출되고 필요시 Event에 정의된 변수를 이용하여 원하는 일을 처리한다.