AS3事件捕获无法正常工作

时间:2014-07-06 13:12:42

标签: actionscript-3 actionscript

我知道事件捕获和冒泡之间的区别以及stopPropagation如何工作。

那么为什么捕获在我的简单测试中不起作用?代码中没有stopPropagation

import flash.display.Sprite;
import flash.events.MouseEvent;

public class CapturingNotWork extends Sprite {
    public function CapturingNotWork() {
        var rect:Sprite = new Sprite();

        rect.graphics.beginFill(0x000000);
        rect.graphics.drawRect(0, 0, 100, 100);
        rect.graphics.endFill();

        // CAPTURING NOT WORKED
        rect.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown, true);


        // BUT THE BUBBLING WORKED
        // rect.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);

        stage.addChild(rect);
    }

    function mouseDown(e:MouseEvent): void {
        trace("It's worked");
    }
}

1 个答案:

答案 0 :(得分:1)

事件从最顶层的父(舞台)开始,然后按下显示对象层次结构,直到到达原始目标。

当useCapture参数设置为true时,侦听器仅在捕获阶段处理事件,而不是在目标或冒泡阶段处理事件。您的事件永远不会到达目标(rect),如此图片所示:

Diagram of three event phases that occur when clicking the box