检测形状与Kinetic.Group之间的碰撞

时间:2014-04-21 16:55:11

标签: collision-detection kineticjs collision

我移动的形状是一个带有width:40height:4的矩形,这使得检测变得更加困难。当width = height(你可以看到大矩形之间的碰撞)时,它会更容易。

在我的情况下,我需要检测此矩形与包含另一个矩形的组之间的碰撞,然后将小的矩形添加到组中。这是了解更多内容的小提琴:http://jsfiddle.net/4Y87X/6/

在底部和组右侧检测到碰撞时效果很好,但左边和上边框不太好"检测到"。

1 个答案:

答案 0 :(得分:0)

好了,既然您已经重构了代码来预先创建window.clone,那么您可以使用此dragend处理程序将克隆分配给一个组,或者将克隆重新定位到原始窗口元素。

演示:http://jsfiddle.net/m1erickson/p4bYB/

clone.on("dragend",function(){
    var pos=stage.getPointerPosition();
    var x=parseInt(pos.x);
    var y=parseInt(pos.y);
    var gPos=group.position();
    var gSize=group.getSize();
    if(x>gPos.x && x<gPos.x+gSize.width && y>gPos.y && y<gPos.y+gSize.height){
        this.moveTo(group);
        thisPos=this.position();
        this.position({x:thisPos.x-gPos.x,y:thisPos.y-gPos.y});
    }else{
        this.moveTo(layer);
        this.position(window.position());
    }
    layer.draw();
});

[每增加一条评论,重新定位后放弃克隆到群组&#39;左下角后放弃]

如果您希望在添加时将克隆定位到组的左上角,请执行以下操作:

this.moveTo(group);
this.position(0,0);