运行以下代码,一次使用 block.mouseEnabled = true,再次使用 block.mouseEnabled = false,在每次运行期间单击该块一次。
var block:Sprite = new Sprite();
block.name = "block";
with(block.graphics){beginFill(0x000000,1);moveTo(0,0);lineTo(100,0);lineTo(100,100);lineTo(0,100);lineTo(0,0);endFill();}
block.mouseEnabled = true; //change to false to see how event target skips root
addChild(block)
stage.addEventListener( MouseEvent.MOUSE_DOWN, mouse_down, false, 0, true );
function mouse_down( e:MouseEvent ):void{trace( e.target );}
为什么将“root”作为目标跳过?这是设计使然吗?这种异常的设计原因是什么或可能是什么?
我问这个是因为它与正常模式明显不同,当子对象将 mouseEnabled 设置为 false 时,当单击其子区域时,父对象将成为目标。
根可能只是事件捕获/目标/冒泡循环行程中的非参与者端点,并且任何到达它的东西都会被应用到舞台而不是根。