flex 自定义事件

来源:互联网 发布:mac版微信公众号 编辑:程序博客网 时间:2024/06/03 14:50

我们自定义事件的执行的过程:

1.我们对于控件的操作产生了事件
2.事件被派发出去
3.事件产生的影响又在界面上体现了出来


自定义事件类 MyEvent :package utils{import flash.events.Event;public class MyEvent extends Event{ public static const EVENT_TEST:String = "EventTest";   public static const ROLL_OVER:String = "RollOver"; public function MyEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false){super(type, bubbles, cancelable);}}}

自定义控件 MyButton:<?xml version="1.0" encoding="utf-8"?><mx:Button xmlns:mx="http://www.adobe.com/2006/mxml"   click="dispatchEvent(new MyEvent(MyEvent.EVENT_TEST))"   rollOver="dispatchEvent(new MyEvent(MyEvent.ROLL_OVER))"   ><!-- 当button被点击的时候就会派发一个新的事件,就是一个类型为MyEVENT.Event_TEST的事件 --><!-- 注意这个地方的Event的名称要和上面派发的事件的名称要完全一致就是:我们所派发的事件,只有在我们的控件里面被定义了,并且在调用的时候被定义了,那么在事件被触发的时候它才会产生效果。 --><mx:Metadata>          [Event(name="EventTest",type="utils.MyEvent")]          [Event(name="RollOver",type="utils.MyEvent")]      </mx:Metadata>  </mx:Button>
测试页面 testMyButton:<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"xmlns:my="utils.*"><mx:Script><![CDATA[import mx.controls.Alert;import utils.MyEvent;private function handleEvent(e:MyEvent):void {trace(e);}private function roolOverHandler(e:MyEvent):void {Alert.show("rollOVer事件被触发了");trace(e);}]]></mx:Script><!-- 触发事件所执行的方法是我们自己随便定义的,关键是事件要可以被触发,事件被触发的关键就在于MyButton位置的定义,对不同的操作派发不同的事件这样我们这边才会做出响应。 --><my:MyButton id="my1" label="ChangeTextArea" EventTest="myTa.text='got event'" x="208" y="213"/><my:MyButton id="my2" label="Trace" EventTest="handleEvent(event)" x="209" y="258"/><my:MyButton id="my3" label="roolOver" RollOver="roolOverHandler(event)"/><mx:TextArea id="myTa" x="141" y="55"/></mx:Application>