我正在尝试确定fabric.Rect何时与另一个fabric.Rect重叠,同时观察'object:moving'事件但在fabric.Group与fabric.Rect之间的结果不一致
当我在一个Rect实例上移动Group时,intersectsWithObject方法返回true,但是当我将Rect实例移到另一个Rect实例上时,它返回false。
我想知道我在这里做错了什么。
这是我的事件处理程序
cvs.observe('object:moving', function(e) {
var targ = e.target;
// filter out itself
var items = cvs.getObjects().filter(function(o){
return targ !== o;
});
var hit = false;
for (var i = 0, n = items.length; i < n; i++) {
var m = items[i];
if (targ.type == "group") {
if (targ.intersectsWithObject(m)) {
targ.setFill("red");
hit = true;
console.log("GROUP HIT");
} else {
if (!hit) {
targ.setFill("#CCCCCC");
}
}
}
else {
// this is always returning false! why?
if (targ.intersectsWithObject(m)) {
var id = m.data ? m.data.entityId : " ??"
console.log("OBJECT HIT:" + id);
targ.setFill("red");
}
}
}
});
我创造了一个小提琴。尝试选择两个或多个块来对它们进行分组。当您将分组对象拖过任何其他fabric.Rect或fabric.Group实例时,您会看到该对象变为红色。当你将一个Rect拖到另一个fabric.Object任何类型的对象上时,它永远不会变成红色,因为intersectsWithObject总是返回false ...