簡體   English   中英

Fabric JS 多個 object 選擇忽略移動 isDisabled

[英]Fabric JS multiple object selection ignores movement isDisabled

我已經為我的 Fabric JS canvas 上的所有對象設置了以下這些屬性。

lockMovementX: isDisabled,
lockMovementY: isDisabled,
lockScalingX: isDisabled,
lockScalingY: isDisabled,
lockUniScaling: isDisabled,
lockRotation: isDisabled,

但是,當我通過按住 shift 鍵 select 多個對象時,這些對象再次可移動,但作為一個整體,知道我如何禁用這種可能性嗎?

canvas.selection = false

這樣,您可以禁用組選擇,但對象仍然可以選擇。

您是否嘗試將可選屬性設置為 false? 這將阻止選擇對象,但事件仍會在它們上觸發

http://fabricjs.com/docs/fabric.Object.html#selectable

selectable:Boolean 設置為false時,不能選擇 object 進行修改(使用基於點單擊或基於組的選擇)。 但事件仍然發生在它身上。

想知道有多少人不明白一個簡單的問題。

是的,有可能。 你必須聽 selection:updated 並檢查選擇中是否有東西被鎖定,然后鎖定目標。

這適用於 fabric 4.4.0。 我將其從我的項目中刪除並希望此代碼示例有效。 至少它應該展示“如何”。

var canvas = window._canvas = new fabric.Canvas('c');

isLockedInSelection()
{
    let activeObjects = canvas.getActiveObjects();
    for (let i in activeObjects)
    {
        if (activeObjects[i].lockMovementX)
            return true;
    }
    return false;
}

canvas.on('selection:updated', ({selected, target}) =>
{
    if (isLockedInSelection())
    {
        target.lockMovementX = true;
        target.lockMovementY = true;
        target.lockSkewingX  = true;
        target.lockSkewingY  = true;
        target.lockRotation  = true;
        target.lockScalingX  = true;
        target.lockScalingY  = true;
    }
});

暫無
暫無

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

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