如何防止单击形状后面的形状在createjs中触发

How to prevent a shape behind a clicked shape to trigger in createjs

我向 Whosebug 提出的第一个问题,请多多包涵。

我在 createjs 舞台上有两个形状。第一个 background 覆盖了整个舞台,并在 click 上定义了一个侦听器。我想在这个上面放另一个形状,这个不应该触发背景上定义的点击侦听器。

在下面的示例中,单击红色 circle 会触发 background 的侦听器。

var stage = new createjs.Stage('c');

var rect = new createjs.Shape();
rect.graphics.beginFill('#0000ff').drawRect(0, 0, 50, 50);

var background = new createjs.Shape();
background.graphics.beginFill('#000000').drawRect(0, 0, 500, 500);
background.alpha = 0.7;
background.on('click', function () {
  circle.visible = !circle.visible;
  stage.update();
});

var circle = new createjs.Shape();
circle.graphics.beginFill('#ff0000').drawCircle(225, 225, 50);

// circle.on('click', function () {});

stage.addChild(rect);
stage.addChild(background);
stage.addChild(circle);

stage.update();

https://codepen.io/anon/pen/rKmPOY

我发现,如果我在圆圈上放一个空的 click 侦听器,我就得到了我想要的,但这感觉很尴尬。

这里正确的方法是什么?这不应该是一个冒泡的问题,因为 background 和 circle 是兄弟姐妹。还是我完全错了?

如果某些东西没有点击侦听器,则在单击鼠标时不会对其进行评估。这绝对是一个理想的行为(让你不想阻止点击的东西更烦人)。

您添加空侦听器的解决方法很好,而且非常典型。

我能想到的唯一其他选择是检查单击鼠标下方的内容,然后手动过滤它,这样工作更多。

干杯,