Actionscript Recebendo eventos de mouse para um menor indexados e parcialmente coberto objetos de exibição?
-
18-09-2019 - |
Pergunta
eu tenho 2 sprites no palco. bottomSprite é adicionado à lista de exibição em primeiro lugar, seguido por topSprite. topSprite cobre parcialmente bottomSprite.
eu adicionei um ouvinte de evento para bottomSprite para as notificações MouseEvent.MOUSE_MOVED simplesmente traçar as coordenadas mouseX e mouseY. no entanto, a notificação não funciona para as partes de bottomSprite que são cobertos por 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);
}
Solução
topSprite.mouseEnabled = false;
Note que o topSprite
não receberá mais nenhum eventos de mouse. Você não pode fazer ambos receber eventos de mouse simultaneamente. Porque o movimento do mouse acontece tanto em cima de bottomSprite
ou topSprite
, não ambos - eles são irmãos.
topSprite
tinha sido uma criança de bottomSprite
, mais tarde receberá eventos do mouse quando você passa do outro lado da ex -. Porque uma criança é parte de seu pai