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不会再收到任何鼠标事件。您不能让它们同时接收鼠标事件。因为鼠标移动发生在bottomSpriteor之上topSprite,而不是两者之上 - 它们是兄弟姐妹。

曾经topSprite是 的子级bottomSprite,当您将鼠标悬停在前者上时,稍后将收到鼠标事件 - 因为子级是其父级的一部分。

于 2010-03-09T12:24:05.300 回答