1

ステージ上に2つのスプライトがあります。bottomSpriteが最初に表示リストに追加され、次にtopSpriteが追加されます。topSpriteはbottomSpriteを部分的にカバーしています。

MouseEvent.MOUSE_MOVED通知のbottomSpriteにイベントリスナーを追加して、mouseX座標とmouseY座標を単純にトレースしました。ただし、topSpriteでカバーされているbottomSpriteの部分では通知は機能しません。

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);
    }
4

1 に答える 1

2
topSprite.mouseEnabled = false;

topSpriteこれ以上マウスイベントを受け取らないことに注意してください。両方にマウスイベントを同時に受信させることはできません。マウスの動きは、両方ではなく、bottomSpriteまたはのいずれかで発生するためtopSprite、兄弟です。

topSpriteの子でした​​が、bottomSprite前者にカーソルを合わせると、後でマウスイベントを受け取ります。これは、子がその親の一部であるためです。

于 2010-03-09T12:24:05.300 に答える