在Kinetic.js中处理多层事件?

时间:2012-09-05 03:43:49

标签: javascript events javascript-events event-handling kineticjs

假设我在layer1上有一个圆圈,然后在layer2上有一个正方形。圆直径是正方形的宽度,它们的中心是相同的,圆圈在正方形的顶部。如何进行设置,如果我在layer1上触发任何事件,则同样的事件将在layer2中的相同位置执行。因此,在这种情况下,如果我点击圆圈,广场的点击事件也将被触发。当然,这并不意味着我只是想把圆圈的事件连接到方块上,而是我基本上希望在两个层上触发事件。

所以例如

circle.on( "click", function() {
    alert("foo");
});

square.on( "click", function() {
    alert("bar");
});

然后点击圆心将触发方形点击事件。

而不是

circle.on( "click", function() {
    alert("foo");
    square.simulate("click"); // don't want this
});

2 个答案:

答案 0 :(得分:0)

如何将圆圈和方块添加到组中,然后将点击事件添加到组中?

答案 1 :(得分:0)

Kinetic有两件事可以帮助你。

  1. getIntersections() - 返回鼠标单击点下的所有形状
  2. fire() - 触发事件
  3. Kinetic docs提到getIntersections()执行缓慢,所以他们更喜欢getIntersection(),但我从来没有使用过,所以我不能说多少。

    http://kineticjs.com/docs/Kinetic.Stage.html#getIntersection

    希望这有帮助。