kineticjs当与另一个重叠时停止拖动到一个形状

时间:2013-02-07 11:30:29

标签: javascript html5 kineticjs

我有两个形状而不是可拖动的组。

拖动蓝色组时,它不应与黄色组重叠。

继承人http://jsfiddle.net/bittu4u4ever/3Kprr/

我尝试了一些getIntersections,但我真的是kinetic.js中的菜鸟。

1 个答案:

答案 0 :(得分:0)

你可能认为getIntersections()会让你碰到碰撞对象,我也这么认为,但事实并非如此。它只给出容器的相交CHILDREN(而不是所有)对象。

您可以在矩形和/或组上运行碰撞检测逻辑。 以下链接是如何检测矩形上的碰撞。拖动矩形时,可以将其应用到代码中。

Fast rectangle to rectangle intersection

这是我用KineticJS检测两个矩形碰撞的函数。

var isRectCollide = function(rect1, rect2) {
    if (rect1.x - rect1.width  >= rect2.x + rect2.width  &&
        rect1.y - rect1.height >= rect2.y + rect2.height &&
        rect1.x + rect1.width  <= rect2.x + rect2.width  &&
        rect1.x + rect1.height <= rect2.y - rect2.height )
        return false;
    else
        return true;
}

您可能已经知道这一点,但以防万一;

  1. 组没有宽度/高度,组中的形状没有。
  2. 组中的形状确实有x / y但相对于组。
  3. 希望有所帮助