我知道事件捕获和冒泡之间的区别以及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");
}
}
答案 0 :(得分:1)
事件从最顶层的父(舞台)开始,然后按下显示对象层次结构,直到到达原始目标。
当useCapture参数设置为true时,侦听器仅在捕获阶段处理事件,而不是在目标或冒泡阶段处理事件。您的事件永远不会到达目标(rect),如此图片所示: