Das
Bubbling funktioniert nicht, weil
Hörer nicht der
parent von Auslöser ist. Um Events bubblen zu lassen muss es eine Hierarchie von DisplayObjects geben. In deinem Fall addest du die Elemente nur zur
stage. Das hat gar keinen Effekt. Das ist einer der Gründe, warum man nicht direkt mit der
stage arbeiten sollte. Es macht of wenig Sinn.
Mein Tipp: mal das Kapitel für Event handling in der Referenz lesen.
Anbei ein Beispiel für Event bubbling.
ActionScript:
package fs.components
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.utils.getQualifiedClassName;
public class Button extends Sprite
{
public function Button()
{
super();
addEventListener(MouseEvent.CLICK, onClick);
graphics.beginFill(0);
graphics.drawRoundRect(0, 0, 100, 100, 10, 10);
graphics.endFill();
}
private function onClick(event:MouseEvent):void
{
trace(getQualifiedClassName(this) + ".onClick [type:" + event.type + "]");
trace("\t[currentTarget:" + event.currentTarget + ", target:" + event.target + "]");
}
}
}
ActionScript:
package fs.components
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.utils.getQualifiedClassName;
public class Application extends Sprite
{
private var _button:Button;
public function Application()
{
super();
addEventListener(MouseEvent.CLICK, onClick);
_button = new Button();
addChild(_button);
}
private function onClick(event:MouseEvent):void
{
trace(getQualifiedClassName(this) + ".onClick [type:" + event.type + "]");
trace("\t[currentTarget:" + event.currentTarget + ", target:" + event.target + "]");
}
}
}
ActionScript:
package
{
import flash.display.Sprite;
import fs.components.Application;
public class AppExample extends Sprite
{
private var _application:Application;
public function AppExample()
{
_application = new Application();
addChild(_application);
}
}
}