diff --git a/packages/core/ServersPlugin.ts b/packages/core/ServersPlugin.ts index 030e6c8d..624e0852 100644 --- a/packages/core/ServersPlugin.ts +++ b/packages/core/ServersPlugin.ts @@ -134,6 +134,14 @@ class ServersPlugin implements IPluginTempl { textPaths.push({ id: item.id, path: item.path }); item.path = null; } + // 设置锁定对象 + if(item.extension?.isLocked) { + item.lockMovementX = true + item.lockMovementY = true + item.lockRotation = true + item.lockScalingX = true + item.lockScalingY = true + } }); // hookTransform遍历 diff --git a/packages/core/plugin/LockPlugin.ts b/packages/core/plugin/LockPlugin.ts index c184480d..9d20cf4e 100644 --- a/packages/core/plugin/LockPlugin.ts +++ b/packages/core/plugin/LockPlugin.ts @@ -181,6 +181,12 @@ export default class LockPlugin implements IPluginTempl { lock() { const activeObject = this.canvas.getActiveObject() as fabric.Object; if (activeObject) { + // 确保 extension 对象存在 + if (!activeObject.extension) { + activeObject.extension = {} + } + // 在 extension 中设置锁定状态 + activeObject.extension.isLocked = true // 修改默认属性 Object.values(ItypeKey).forEach((key: ItypeKey) => { activeObject[key] = true; @@ -197,6 +203,10 @@ export default class LockPlugin implements IPluginTempl { activeObject.hasControls = true; activeObject.selectable = true; activeObject.evented = true; + // 清除 extension 中的锁定状态 + if (activeObject.extension) { + activeObject.extension.isLocked = false + } // 修改默认属性 Object.values(ItypeKey).forEach((key: ItypeKey) => { activeObject[key] = false;