闪光事件监听全局事件
-
06-09-2019 - |
题
我有一系列的影片剪辑,影片剪辑的几个内举行的,可调度,我想在舞台监听和交互定制移动事件。有一个方法添加到阶段(或任何对象)的事件侦听器的一种类型的任何情况下,无论在哪里它从分派的?
例如,我可以添加到舞台事件侦听器监听这是从一个孩子派遣任何EVENT.COMPLETE
,或任何其子女或任何它的孩子的孩子?
解决方案
你所寻找的是事件冒泡。新事件的第三个属性设置为true,使气泡,它会冒泡显示列表,从调度事件到舞台上的对象开始。看官方文档的更多信息。
泰勒。
编辑:更改为“对象调度事件”,“从开始阶段”
其他提示
好了,这是我永远也不会明白...为什么人们总是用冒泡事件捕捉舞台上的活动?
如果你看该文档,事件被从阶段传播到目标对象(捕获阶段),然后气泡如果启用鼓泡。
所以...只是使用捕获:
Main.as
package {
import flash.display.Sprite;
public class Main extends Sprite
{
public function Main()
{
var c:Circle = new Circle();
var r:Rect = new Rect();
c.addChild(r);
addChild(c);
addEventListener(CustomEvent.CUSTOM, customEventHandler, true);//don't forget third parameter to use capture
}
private function customEventHandler(e:CustomEvent):void
{
trace(e.eventPhase == EventPhase.CAPTURING_PHASE);//shows true
}
}
}
Circle.as
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class Circle extends Sprite
{
public function Circle()
{
super();
init();
}
private function init():void
{
with(graphics)
{
beginFill(0xFF0000);
drawCircle(25, 25, 50);
endFill()
}
}
}
}
Rect.as
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
public class Rect extends Sprite
{
public function Rect()
{
super();
init();
}
private function init():void
{
with(graphics)
{
beginFill(0x000000);
drawRect(0, 0, 25, 25);
endFill();
}
addEventListener(MouseEvent.CLICK, mouseClickHandler);
}
private function mouseClickHandler(e:MouseEvent):void
{
dispatchEvent(new CustomEvent(CustomEvent.CUSTOM));
}
}
}
CustomEvent.as
package
{
import flash.events.Event;
public class CustomEvent extends Event
{
public static const CUSTOM:String = "custom";
public function CustomEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
}
}
不隶属于 StackOverflow