大家好日子,
我想知道是否有办法检测布料对象是否完全在另一个对象中?
我在文档中查看了object.intersectsWithObject(object2)
,但不幸的是,只要对象完全位于object2中,该函数就不会再回复为true,而是伪造。
有其他人有这个问题吗?我根本不知道如何做到这一点。 我在fabric.js中搜索过该函数。有人可以帮忙吗?
intersectsWithObject: function(other) {
// extracts coords
function getCoords(oCoords) {
return {
tl: new fabric.Point(oCoords.tl.x, oCoords.tl.y),
tr: new fabric.Point(oCoords.tr.x, oCoords.tr.y),
bl: new fabric.Point(oCoords.bl.x, oCoords.bl.y),
br: new fabric.Point(oCoords.br.x, oCoords.br.y)
};
}
var thisCoords = getCoords(this.oCoords),
otherCoords = getCoords(other.oCoords),
intersection = fabric.Intersection.intersectPolygonPolygon(
[thisCoords.tl, thisCoords.tr, thisCoords.br, thisCoords.bl],
[otherCoords.tl, otherCoords.tr, otherCoords.br, otherCoords.bl]
);
return intersection.status === 'Intersection';
}
谢谢你的帮助 塞巴斯蒂安
答案 0 :(得分:3)
如果你想知道abject是否完全在另一个对象中,你应该使用isContainedWithinObject:
isContainedWithinObject(other)→{布尔}
§检查对象是否完整 包含在另一个对象的区域内
参数:
名称:其他
输入:对象说明:要测试的对象
来源:fabric.js, 第12300行
返回:如果对象完全包含在区域内,则返回true 另一个对象
输入:布尔值
这是来源:
isContainedWithinObject: function(other) {
var boundingRect = other.getBoundingRect(),
point1 = new fabric.Point(boundingRect.left, boundingRect.top),
point2 = new fabric.Point(boundingRect.left + boundingRect.width, boundingRect.top + boundingRect.height);
return this.isContainedWithinRect(point1, point2);
}
它使用您要测试的对象的边界框。