创建自定义事件 的理解

  创建自定义事件包括创建事件对象和派发事件两个部分:派发事件,使用EventDispatche 的dispatchEvent 方法:dispatchEvent(event:Event);其中event参数就是创建的事件对象。

一、在需要派发的组件设置事件:(就是当前的发生事件的是组件:假设名称为MyComponent)

  • 定义一个事件

      1、定义事件类型常量名

public const CLICK_IMAGE:String = "clickImage";
2、定义事件
public var myEvent:Event=new Event(CLICK_IMAGE,false));
  • 派发事件: 
    diapatchEvent(myEvent);

                (综合一起dispatchEvent(new Event(CLICK_IMAGE, false));)

             然后再需要使用事件的主程序:

  • 在程序初始化时为组件的事件注册监听器,事件类型跟组件的事件类型一致:
internal funtion initApp():void{
  MyComponent.addEventListener(MyComponent.CLICK_IMAGE, clickHandler);
}
  • 设置监听函数:
internal function clickHandler(evt:Event):void{}

 

二、如果需要使用自定义的事件对象:

  • 创建自定义对象的类:
  •  
    • 类必须继承Event
public class ImageEvent extends Event{}
  •  
    • 定义事件类型常量:
public const CLICK_IMAGE:String = "clickImage";
  •  
    • 定义需要传递的参数为类属性: (Object对象,String也是Object)
public var _data:Object;
  •  
    • 在构造函数中,定义参数,用来接收数据,这个数据将被符给类属性:
public function ImageEvent (type:String, bubbles:Boolean=false, cancelable:Boolean=false, data:Object=null)
  {
   if (data != null) _data = data;
   super(type, bubbles, cancelable);
  }

  • 使用自定义事件对象:
    • 在派发事件部分,使用自定义对象为事件对象派发出去,修改为:
dispatchEvent(new ImageEvent(ImageEvent.CLICK_IMAGE,false,false,event.data));()
  •  
    • 在主程序的监听函数就可以使用自定义对象的数据了:
nternal function clickHandler(evt:ImageEvent):void{
  evt.data; //data就是我们在自定义对象定义的属性。
}


 

posted @ 2010-05-11 17:07  gaofei_work  阅读(253)  评论(0编辑  收藏  举报