我正在使用fabric.js,当我有一个较小的对象(w.r.t高度和宽度或缩小为较小)放置在一个更大的对象上时,我无法在点击时选择较小的对象
我甚至尝试过以下方法,它解决了我的可选问题,但缺点是我在边界处失去了缩放,我无法在实现下面后缩放对象。
您可以尝试相同的以下urlhttp://fabricjs.com/events/查看我附上的截图,我已经缩放了红色方块,并在其上放置了一个较小的绿色方块。完成此展示位置后,我无法选择绿色方块。
canvas.on('mouse:up',function(e){
canvas.setActiveObject(canvas.item(e.target));
});
答案 0 :(得分:2)
由于“优化”,它是一个已知问题https://github.com/kangax/fabric.js/issues/1188。
我通过在_searchPossibleTargets中注释掉第一个if语句来解决它,
fabric.util.object.extend(fabric.Canvas.prototype, {
_searchPossibleTargets: function(e) {
// Cache all targets where their bounding box contains point.
var target,
pointer = this.getPointer(e);
/*
if (this._activeObject && this._checkTarget(e, this._activeObject, pointer)) {
this.relatedTarget = this._activeObject;
return this._activeObject;
}
*/
var i = this._objects.length;
while(i--) {
if (this._checkTarget(e, this._objects[i], pointer)){
this.relatedTarget = this._objects[i];
target = this._objects[i];
break;
}
}
return target;
}
});
if的目的是返回鼠标在其中的当前活动对象,而不管对象顺序如何。如果你有大量的对象并且阻止你在它之前检查所有对象,它就是一个优化。
答案 1 :(得分:1)
您使用的是哪个版本?当我将1.4.0更新到1.4.4时,我遇到了同样的问题。 我不得不回到1.4.0。也许版本1.4.0适用于你。