簡體   English   中英

fabricjs放置在較大對象上時較小的對象選擇

[英]fabricjs smaller object selection when placed over larger objects

我正在使用fabric.js,當我將較小的對象(高度和寬度或縮放為較小的對象)放在較大的對象上時,單擊時無法選擇較小的對象

我什至嘗試了以下方法,它解決了我的可選問題,但是缺點是我失去了在邊界角的縮放比例,實現以下步驟后無法縮放對象。

您可以在以下urlhttp://fabricjs.com/events/上嘗試相同操作,檢查所附的屏幕截圖,我已縮放了紅色正方形,並在其上放置了一個較小的綠色正方形。 完成此放置后,我將無法選擇綠色方塊。

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

canvas.setActiveObject(canvas.item(e.target));

});

單擊時不會選擇較大對象上的較小對象

由於“優化”,它是一個已知問題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.4.0更新為1.4.4時遇到了相同的問題。 我不得不回到1.4.0。 也許版本1.4.0將為您工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM