在网上查了一会,用常用的自定义事件的方式,有时候进行传参、监听和发送貌似不成功。所自己找了一些资料,自己写了一个自定义的事件,直接使用自身的DispatchEvent和监听addeventlistener 个人感觉方便多。在这里显丑了。
package Event { import flash.events.Event; import mx.controls.Button; public class PublicEvent extends Event { private var _data:Object; public static const PUBLIC:String="public"; private static var _cancelable:Boolean = false; private static var submit:Button=new Button(); public function PublicEvent(type:String, data:Object=null, cancelable:Boolean=false) { //TODO: implement function super(type); _data = data; _cancelable = cancelable; } public override function clone():Event{ return new PublicEvent(this.type,this.data,this.cancelable); } public function get data():Object { return _data; } public function set data(value:Object):void { _data = value; } public static function get cancelable():Boolean { return _cancelable; } public static function set cancelable(value:Boolean):void { _cancelable = value; } public static function dispatch(type:String,data:Object=null,cancelable:Boolean=false):Boolean{ return submit.dispatchEvent(new PublicEvent(type,data,cancelable)); } public static function addListener(type:String,listener:Function,useCapture:Boolean=false,priority:int=0,useWeakReference:Boolean=false):void{ submit.addEventListener(type,listener,useCapture,priority,useWeakReference); } } }
这不管是组件之间,还是组件与模块、主程序之间都可以进行通信与传参。