1

是否可以为两个重叠的精灵调用鼠标事件?我试图使用,getObjectsUnderPoint但它似乎没有工作。

class Line extends Sprite
{
    int x;
    int y;
    int type;
    var tempLine = new Shape();
    bool isClicked = false;

    Line(int xPos, int yPos, int type)
    {
        this.x = xPos;
        this.y = yPos;
        this.type = type;

        if(type == 1)
        {
            graphics.beginPath();
            graphics.moveTo(x, y);
            graphics.lineTo(x+300, y);
            graphics.closePath();
            graphics.strokeColor(Color.LightGray,19);
            addEventListener(MouseEvent.CLICK, react);
            tempLine.graphics.beginPath();
            tempLine.moveTo(x,y);
            tempLine.graphics.lineTo(x+300,y);
            tempLine.graphics.closePath();
        }
        else if(type == 2)
        {
            graphics.beginPath();
            graphics.moveTo(x, y);
            graphics.lineTo(x, y+300);
            graphics.closePath();
            graphics.strokeColor(Color.LightGray,19);
            addEventListener(MouseEvent.CLICK, react);
            tempLine.graphics.beginPath();
            tempLine.moveTo(x,y);
            tempLine.graphics.lineTo(x,y+300);
            tempLine.graphics.closePath();
        }
        addChild(tempLine);
    }

    react(MouseEvent event)
    {
        Point tempPoint = new Point(event.localX, event.localY);
        graphics.strokeColor(Color.Black,19);
        isClicked = true;
        var subShape = getObjectsUnderPoint(tempPoint);
        for(Shape i in subShape)
        {
            i.parent.userData.isClicked = true;
        }
    }
}

我有两个Line对象重叠,当单击一个对象时,我希望两个对象的布尔值都是true. 我读过getObjectsUnderPoint不返回 a Sprite,这可能是问题吗?

4

1 回答 1

1

MouseEvents 仅调度到扩展 InteractiveObject 类的最顶层显示对象(对于所有 DisplayObjectContainers 和 Sprites 都是如此)。因此只有一个显示对象可以接收 MouseEvent.CLICK 事件。您是对的,getObjectsUnderPoint 确实只返回 DisplayObjectContainers 的子项,但 GitHub 存储库 ( https://github.com/bp74/StageXL/issues/209 ) 上有一个未解决的问题正在讨论这个问题。StageXL 的下一版本(高于 0.13 版)可能会改变这种行为。

于 2015-11-23T08:09:22.430 回答