KineticsJS - 碰撞检测不适用于新添加的形状

时间:2013-11-21 16:45:17

标签: javascript collision-detection kineticjs

初始化场景时,我在舞台上添加了一组形状。我正在使用

Shape.intersects(point) 

检查初始形状与作为抛射物抛出的其他形状之间的碰撞。它工作正常。

但是如果我向组添加新形状,则intersects()方法不会检测射弹与新添加的形状之间的碰撞。新的形状虽然被看作是我的一群形状的孩子。

我也尝试过使用

Kinetic.Stage#getIntersection

但它也无法检测到新形状的碰撞。

任何帮助解决这个问题都将不胜感激!

修改 这是一个重现问题的JSFiddle: http://jsfiddle.net/matdev/3dYHA/

任何人都可以向我解释为什么弹丸不会与第一个圆圈相撞?

这是我的碰撞检测功能:

    function checkCollision(meteore) {
        var hasCollided = false;
        var children = wholePlanet.getChildren();

        for (var i = 0; i < children.length; i++) {  // for each single shape
                var r = children[i];
                if (r != planet) {
                    hasCollided = r.intersects(meteore.getX(), meteore.getY());

                    if (hasCollided) {
                        alert("Collision detected !")
                        if (r.shapeType == meteore.shapeType) {
                            var fillColor = meteore.getFill();
                            r.setFill(fillColor);
                            meteore.remove();
                        } else {
                            meteore.remove();
                        }

                        break;
                    }
                }
        }

        return hasCollided;
    }

0 个答案:

没有答案