Flex使用自定义事件
Flex
在Flex中增加一个新的事件,通常需要如下步骤:
1. 创建一个自定义的事件类,该类继承自flash.events.Event,比如
1: package mypackage 2: { 3: import flash.events.Event; 4: 5: public class ValueChangedEvent extends Event 6: { 7: // event name 8: public static const VALUE_CHANGED:String = "valueChanged"; 9: public var value:Number; // customized filed for the event 10: 11: public function ValueChangedEvent(type:String, newValue:Number) 12: { 13: super(type); 14: this.value = newValue 15: } 16: 17: override public function clone():Event { 18: return new ValueChangedEvent(type, value); 19: } 20: } 21: }
2. 在需要发布事件的组件里面,创建一个事件的metadata标签,这样Flex Builder就能自动提示该组件支持这个事件。
比如,在action script里面:
1: [Event(name="valueChange", type="mypackages.ValueChangeEvent")] 2: public class MyComponent extends TextArea 3: { 4: ... 5: } 6:
在mxml里面:
1: <mx:Metadata> 2: [Event(name="valueChanged", type="mypackage.ValueChangeEvent")] 3: </mx:Metadata> 4:
3. 注册事件
在MXML里面处理事件很简单。如果要把多个对象作为事件的接受者,该怎么办呢?在Flex里面,多数Components都继承了 EventDispatcher,该类提供了管理、通知事件的功能。从这点上看,Flex比Java要方便些。
如果要把一个对象注册为某个事件的接受者,只需下面这段代码:
1: addEventListener(ValueChangedEvent.VALUE_CHANGED,listener);
[注意]上面方法中的listener是一个 Function对象。如果你需要myobj里面的handleValueChanged方法能响应该事件,那么你需要将 myobj.handleValueChanged传给addEventListener方法,注意handleValueChanged后面没有" ()"。
4. 通知事件
在发布事件的组件里面,通过调用如下代码就能把相应的事件发布出去:
1: var e:ValueChangedEvent = new ValueChangedEvent( 2: ValueChangedEvent.VALUE_CHANGED, newValue); 3: dispatchEvent(e);
Flex里面,创建自定义事件需要两个参数,一个代表事件类型的String对象,一个是特定于这个事件的信息(比如这里的newValue)。
本文来自CSDN博客,转载请标明出处:http://www.cnblogs.com/nianshi/archive/2010/05/11/1732258.html