package ...{ import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.EventDispatcher; publicclass LearnDecoratorEvents extends Sprite ...{ public function LearnDecoratorEvents() ...{ var kingdaObj:KingdaClass =new KingdaClass(); kingdaObj.addEventListener(KingdaClass.ACTION, lisFunc); //用起来和EventDispatcher对象一样哦,呵呵。 var evtObj:Event =new Event(KingdaClass.ACTION); kingdaObj.dispatchEvent(evtObj);//确实一样吧 :) //输出:listened:yeahyeah } private function lisFunc(evtObj:Event):void...{ trace ("listened:"+evtObj.type); } } import flash.events.IEventDispatcher; import flash.events.EventDispatcher; import flash.events.Event; class KingdaClass implements IEventDispatcher...{ public var _dispatcher:EventDispatcher; publicstaticconst ACTION:String ="yeahyeah"; public function KingdaClass() ...{ // other .... initSender(); } private function initSender():void...{ _dispatcher =new EventDispatcher(this); } //哈哈,在实现接口时还可以乘机干点别的,比如我喜欢吧useWeakReference设为true public function addEventListener(type:String, listener:Function, useCapture:Boolean =false, priority:int=0, useWeakReference:Boolean =true):void...{ // do other things; _dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference); } public function dispatchEvent(evt:Event):Boolean...{ // do other things; return _dispatcher.dispatchEvent(evt); } public function hasEventListener(type:String):Boolean...{ // do other things; return _dispatcher.hasEventListener(type); } public function removeEventListener(type:String, listener:Function, useCapture:Boolean =false):void...{ // do other things; _dispatcher.removeEventListener(type, listener, useCapture); } public function willTrigger(type:String):Boolean ...{ // do other things; return _dispatcher.willTrigger(type); } } }