区分离开形状和进入重叠形状(KineticJS)

时间:2012-10-12 05:51:16

标签: javascript mouseevent html5-canvas kineticjs

我想这将是一个非常普遍的问题。我有一个较小形状的小形状。当我输入大号形状时,它会被注册为mouseenter / mouseover。但是当我输入小形状时,大形状会注册mouseleave / mouseout。这就像我去洛杉矶国际机场的洗手间和机场人员要求我再次通过保安离开终端。

这是一个说明问题的minimal JSFiddle example

2 个答案:

答案 0 :(得分:1)

这是有意的。你不再盘旋在圆圈上,你在三角形上空盘旋。这些是层次,所以根据你的定义,当你站在地毯上时,你会触摸地板。

如果您希望三角形忽略事件,可以调用triangle.setListening(false),如下所示:http://jsfiddle.net/YcBNL/19/。这样,事件将通过它传递到下面的形状。

另一种方法是使用Kinetic.Group对圆和三角进行分组,并将事件侦听器添加到组而不是圆。

答案 1 :(得分:0)

上面的{p> Michael's suggestion看起来很有希望,但它所做的只是让一个形状(在这种情况下是三角形),或者将所有功能都移到组中,这也不是我想要的。

暂时我所做的是使用mouseenter信号作为圆圈的三角形和鼠标信号,这似乎有效。但是,我怀疑这将适用于两个以上的重叠形状。如果有人提出了更好的解决方案,我会全力以赴=)