Здравствуйте!
Помогите разобраться начинающему кодеру.
Есть главный класс Main:

Код AS3:
package
{
import flash.display.*;
public class Main extends Sprite
{
public function Main():void
{
var a:A = new A()
a.addEventListener(SimpleEvent.MY_TYPE, onSimpleEvent)
a.askForEvent()
}
private function onSimpleEvent(e:SimpleEvent):void
{
trace(e.someVar)
}
}
}
Класс A:

Код AS3:
package
{
import flash.events.EventDispatcher;
public class A extends EventDispatcher
{
private var b:B;
public function A()
{
super()
b = new B()
b.addEventListener(SimpleEvent.MY_TYPE, onSimpleEvent)
}
public function askForEvent():void
{
b.doEvent()
}
private function onSimpleEvent(e:SimpleEvent):void
{
dispatchEvent(e)
}
}
}
Класс B:

Код AS3:
package
{
import flash.events.EventDispatcher;
public class B extends EventDispatcher
{
public function B()
{
super()
}
public function doEvent():void
{
var event:SimpleEvent = new SimpleEvent(SimpleEvent.MY_TYPE)
event.someVar = "hello!";
dispatchEvent(event)
}
}
}
Ну и собственно сам SimpleEvent:

Код AS3:
package
{
import flash.events.Event;
public class SimpleEvent extends Event
{
public static const MY_TYPE:String = "my_type"
private var _someVar:String
public function SimpleEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
public override function clone():Event
{
return new SimpleEvent(type, bubbles, cancelable);
}
public override function toString():String
{
return formatToString("SimpleEvent", "type", "bubbles", "cancelable", "eventPhase");
}
public function get someVar():String
{
return _someVar;
}
public function set someVar(value:String):void
{
_someVar = value;
}
}
}
Обясните пожалуйста, почему обработчик событий onSimpleEvent в главном классе выводить
null, а не
"hello!" ? Неужели мне для баблинга события надо создавать новый экземпляр SimpleEvent в обработчике onSimpleEvent класса B и его свойству someVar присваивать свойство someVar уже отдиспатченного события?
типа так:

Код AS3:
package
{
import flash.events.EventDispatcher;
public class A extends EventDispatcher
{
private var b:B;
public function A()
{
super()
b = new B()
b.addEventListener(SimpleEvent.MY_TYPE, onSimpleEvent)
}
public function askForEvent():void
{
b.doEvent()
}
private function onSimpleEvent(e:SimpleEvent):void
{
var event:SimpleEvent = new SimpleEvent(SimpleEvent.MY_TYPE)
event.someVar=e.someVar
dispatchEvent(event)
}
}
}