Почему в AS3 события мыши пропускают «root» и переходят на «stage»? - PullRequest
2 голосов
/ 14 марта 2012

Запустите следующий код, один раз с 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, родительский объект становится целью при щелчке по его дочерней области.

Может случиться так, что корень является просто неучастной конечной точкой в ​​событии захвата события / цели / всплывающего сообщения, и все, что достигает его, применяется к стадии вместо корня.

1 Ответ

1 голос
/ 06 апреля 2012

Любые штрихи и векторные заливки на графике не являются интерактивными и не могут фиксировать интерактивные события. U может использовать метод graphics.beginBitmapFill или добавить растровое изображение (или любое другое) в качестве дочернего в.

...