我有一系列的影片剪辑,影片剪辑的几个内举行的,可调度,我想在舞台监听和交互定制移动事件。有一个方法添加到阶段(或任何对象)的事件侦听器的一种类型的任何情况下,无论在哪里它从分派的?

例如,我可以添加到舞台事件侦听器监听这是从一个孩子派遣任何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);
        }

    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top