我移动的形状是一个带有width:40
和height:4
的矩形,这使得检测变得更加困难。当width = height(你可以看到大矩形之间的碰撞)时,它会更容易。
在我的情况下,我需要检测此矩形与包含另一个矩形的组之间的碰撞,然后将小的矩形添加到组中。这是了解更多内容的小提琴:http://jsfiddle.net/4Y87X/6/
在底部和组右侧检测到碰撞时效果很好,但左边和上边框不太好"检测到"。
答案 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);