Actionscript Прием событий мыши для нижних проиндексированных и частично закрытых экранных объектов? - PullRequest
1 голос
/ 09 марта 2010

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

Я добавил слушатель события в 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);
    }

1 Ответ

2 голосов
/ 09 марта 2010
topSprite.mouseEnabled = false;

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

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

...