Actionscript Recebendo eventos de mouse para um menor indexados e parcialmente coberto objetos de exibição?

StackOverflow https://stackoverflow.com/questions/2408486

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);
    }
Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top