如何防止点击形状后面的形状在createjs

时间:2018-06-12 20:26:23

标签: createjs

我对stackoverflow的第一个问题,所以请善待。

我在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听众,我就会得到我想要的东西,但这感觉很尴尬。

这里的正确方法是什么?这不应该是一个冒泡的问题,因为背景和圈子是兄弟姐妹。或者我是否完全错了?

1 个答案:

答案 0 :(得分:0)

如果某些内容没有点击侦听器,则单击鼠标时将不会对其进行评估。这绝对是一种理想的行为(让你不喜欢阻止点击的事情会更烦人。)

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

我能想到的唯一其他选择是检查点击鼠标下的内容,并手动过滤,这样做更多。

干杯,