ActionScript, получающий события мыши для более низких индексированных и частично закрытых объектов отображения?

у меня 2 спрайта на сцене. Сначала в список отображения добавляется нижний спрайт, а затем верхний спрайт. topSprite частично закрывает нижний Sprite.

Я добавил прослушиватель событий в bottomSprite для уведомлений MouseEvent.MOUSE_MOVED, чтобы просто отслеживать координаты mouseX и mouseY. однако уведомление не работает для частей bottomSprite, которые покрываются topSprite.

var bottomSprite:Sprite = new Sprite();
bottomSprite.graphics.beginFill(0x666666, 0.5);
bottomSprite.graphics.drawRect(150,150, 150, 150);
bottomSprite.graphics.endFill();
addChild(bottomSprite);

var topSprite:Sprite = new Sprite();
topSprite.graphics.beginFill(0x00FFFF, 0.5);
topSprite.graphics.drawRect(250,50, 150, 150);
topSprite.graphics.endFill();
addChild(topSprite);

bottomSprite.addEventListener(MouseEvent.MOUSE_MOVE, traceCoords);
function traceCoords(evt:MouseEvent):void
    {
    trace ("Coord = X:" + bottomSprite.mouseX + ", Y:" + bottomSprite.mouseY);
    }

person Chunky Chunk    schedule 09.03.2010    source источник


Ответы (1)


topSprite.mouseEnabled = false;

Обратите внимание, что topSprite больше не будет получать события мыши. Вы не можете заставить их обоих получать события мыши одновременно. Потому что движение мыши происходит либо над bottomSprite, либо над topSprite, а не над ними обоими — они братья и сестры.

Если бы topSprite был дочерним элементом bottomSprite, позже будут получать события мыши, когда вы наводите указатель мыши на первый, потому что дочерний элемент является частью своего родителя.

person Amarghosh    schedule 09.03.2010