Javascript fabricjs放置在较大对象上时选择较小的对象

Javascript fabricjs放置在较大对象上时选择较小的对象,javascript,fabricjs,Javascript,Fabricjs,我使用的是fabric.js,当我在一个较大的对象上放置一个较小的对象(w.r.t高度和宽度或缩放为更小)时,我无法在单击时选择较小的对象 我甚至尝试了以下方法,它解决了我的可选问题,但缺点是我失去了边界角的缩放,我无法在实现以下方法后缩放对象 您可以在以下各项上尝试相同的方法urlhttp://fabricjs.com/events/ 查看我的屏幕截图,我已经缩放了红方块,并在上面放置了一个较小的绿色方块。完成此放置后,我无法选择绿色方形 canvas.on('mouse:up',函数(e){

我使用的是fabric.js,当我在一个较大的对象上放置一个较小的对象(w.r.t高度和宽度或缩放为更小)时,我无法在单击时选择较小的对象

我甚至尝试了以下方法,它解决了我的可选问题,但缺点是我失去了边界角的缩放,我无法在实现以下方法后缩放对象

您可以在以下各项上尝试相同的方法urlhttp://fabricjs.com/events/ 查看我的屏幕截图,我已经缩放了红方块,并在上面放置了一个较小的绿色方块。完成此放置后,我无法选择绿色方形

canvas.on('mouse:up',函数(e){

}))


您使用的是哪个版本?当我将版本1.4.0更新为1.4.4时,我也遇到了同样的问题。
我不得不回到1.4.0。也许1.4.0版适合您。

您使用的是哪个版本?当我将版本1.4.0更新为1.4.4时,我也遇到了同样的问题。
我不得不回到1.4.0。也许1.4.0版适合您。

您使用的是哪个版本?当我将版本1.4.0更新为1.4.4时,我也遇到了同样的问题。
我不得不回到1.4.0。也许1.4.0版适合您。

您使用的是哪个版本?当我将版本1.4.0更新为1.4.4时,我也遇到了同样的问题。 我不得不回到1.4.0。也许1.4.0版适合您。

由于“优化”,这是一个已知的问题

我在_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的目的是返回鼠标所在的当前活动对象,而不管对象顺序如何。如果你有大量的对象,并且阻止你检查之前的所有对象,这就是一个优化。

这是一个已知的问题,因为“优化”

我在_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的目的是返回鼠标所在的当前活动对象,而不管对象顺序如何。如果你有大量的对象,并且阻止你检查之前的所有对象,这就是一个优化。

这是一个已知的问题,因为“优化”

我在_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的目的是返回鼠标所在的当前活动对象,而不管对象顺序如何。如果你有大量的对象,并且阻止你检查之前的所有对象,这就是一个优化。

这是一个已知的问题,因为“优化”

我在_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的目的是返回鼠标所在的当前活动对象,而不管对象顺序如何。如果您有大量对象,并且阻止您检查之前的所有对象,则这是一种优化。

是,这也适用于最新版本。它还解决了我在yes上发布的itext bug,该bug也适用于最新版本。它还解决了我在yes上发布的itext bug,该bug也适用于最新版本。它还解决了我在yes上发布的itext bug,该bug也适用于最新版本。它还解决了我发布的itext错误