gpt4 book ai didi

Dart StageXL 在重叠的 Sprite 上激活鼠标事件

转载 作者:行者123 更新时间:2023-12-03 03:43:54 25 4
gpt4 key购买 nike

是否可以为两个重叠的 Sprite 调用鼠标事件?我尝试使用 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对象重叠,当单击一个对象时,我希望两个对象的 bool 值都是 true .我读过 getObjectsUnderPoint不返回 Sprite ,这可能是问题吗?

最佳答案

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

关于Dart StageXL 在重叠的 Sprite 上激活鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33864014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com