Вот при разборке dispatchEvent столкнулся с такой историей:

Код AS3:
package {
import flash.events.Event;
import flash.display.Sprite;
public class IEventDispatcherExample extends Sprite {
private var mainzx:Number=50;
public function IEventDispatcherExample() {
var decorDispatcher:DecoratedDispatcher = new DecoratedDispatcher();
decorDispatcher.addEventListener("doSomething", didSomething);
decorDispatcher.dispatchEvent(new Event("doSomething"));
}
public function didSomething(evt:Event):void
{
mainzx=1112;
trace('OK');
}
public function aaaaaaa():Number
{
return mainzx;
}
}
}
import flash.events.IEventDispatcher;
import flash.events.EventDispatcher;
import flash.events.Event;
class DecoratedDispatcher implements IEventDispatcher {
private var dispatcher:EventDispatcher;
public function DecoratedDispatcher() {
dispatcher = new EventDispatcher(this);
}
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void{
dispatcher.addEventListener(type, listener, useCapture, priority);
}
public function dispatchEvent(evt:Event):Boolean{
return dispatcher.dispatchEvent(evt);
}
public function hasEventListener(type:String):Boolean{
return dispatcher.hasEventListener(type);
}
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void{
dispatcher.removeEventListener(type, listener, useCapture);
}
public function willTrigger(type:String):Boolean {
return dispatcher.willTrigger(type);
}
}
И вот исполняемый код:

Код AS3:
import flash.events.Event;
import flash.display.Sprite;
var main: IEventDispatcherExample = new IEventDispatcherExample();
main.addEventListener("doSomething",mainaaa);
function mainaaa(e:Event):void
{var aaaa=main.aaaaaaa();
trace(aaaa); // ЧТО ТО ТУТ НИЧЕГО НЕ ПОКАЗЫВАЕТ?!! ПОЧЕМУ?
}