Flex自定義事件、傳值
阿新 • • 發佈:2019-02-05
定義自己的Event類:MyEvent package com { import flash.events.Event; import flash.events.EventDispatcher; public class MyEvent extends Event { public static const EVENT_TEST:String = "EventTest"; public var data:Object; public static const dis:EventDispatcher = new EventDispatcher(); public function MyEvent(type:String,bubbles:Boolean = false,canceable:Boolean = false,data:Object = null) { super(type,bubbles,canceable); this.data = data; } } }
測試頁面: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:test="com.*" > <mx:Script> <![CDATA[ import mx.controls.Alert; import com.MyEvent; /*事件的執行過程: * 1.為自定義事件類的EventDispatcher新增監聽 * 2.例項化自定義事件 * 3.為事件的data賦值(用來把值傳遞給監聽) * 4.監聽處理事件返回的物件 * 這裡面的設定的MyEvent.EVENT_TEST值的作用是 * 提供了一個監聽器監聽事件型別的標誌,因為可能 * 我們會使用一個自定義事件類傳遞多種值,這個時 * 候不同種類的值之間的識別就需要通過事件的型別 * 來區別了 */ private function test():void { //為事件新增監聽 MyEvent.dis.addEventListener(MyEvent.EVENT_TEST,onEnd); setValue(); } private function setValue():void { //例項化一個事件,併為data賦值 var e:MyEvent = new MyEvent(MyEvent.EVENT_TEST,false,false,'dada'); //把事件派發出去 //注意這裡需要使用的是自己的派發器,而不能使用此類做自帶的派發方法dispatch(); MyEvent.dis.dispatchEvent(e); } private function onEnd(e: MyEvent):void { //處理事件返回的值 Alert.show(e.data.toString()); } ]]> </mx:Script> <mx:Button label="Test" id="btn" click="test()"/> </mx:Application>