diff --git a/src/component/Canvas/CanvasEditor/managers/CanvasManager.js b/src/component/Canvas/CanvasEditor/managers/CanvasManager.js index 9b0e0d9d..75c547dd 100644 --- a/src/component/Canvas/CanvasEditor/managers/CanvasManager.js +++ b/src/component/Canvas/CanvasEditor/managers/CanvasManager.js @@ -1468,9 +1468,12 @@ backgroundObject.scaleY,'CanvasManager resetCanvasSizeByFixedLayer') } /** 修复JSON数据中的ID丢失问题 */ FixJsonIdLoss(json){ + const layerIds = []; const layers = json?.layers || []; const objects = json?.canvas?.objects || []; layers.forEach((layer) => { + layerIds.push(layer.id); + layer.children?.forEach((child) => layerIds.push(child.id)); if(!layer.fabricObjects?.[0]?.id && !layer.fabricObject?.id){ const obj = objects?.find((o) => o.layerId === layer.id); if(obj) { @@ -1488,7 +1491,15 @@ backgroundObject.scaleY,'CanvasManager resetCanvasSizeByFixedLayer') }) // 排除的对象id const excludedObjects = [SpecialLayerId.PART_SELECTOR]; - json.canvas.objects = objects.filter((v) => !excludedObjects.includes(v.id)); + json.canvas.objects = objects.filter((v) => { + // 指定ID排除 + if(excludedObjects.includes(v.id)) return false; + + if(v.isBackground || v.isFixed) return true; + // 当前图层不存在当前对象 + if(!layerIds.includes(v.layerId)) return false; + return true + }); } diff --git a/src/component/Canvas/CanvasEditor/managers/LayerManager.js b/src/component/Canvas/CanvasEditor/managers/LayerManager.js index 6fc3078c..b0935346 100644 --- a/src/component/Canvas/CanvasEditor/managers/LayerManager.js +++ b/src/component/Canvas/CanvasEditor/managers/LayerManager.js @@ -1961,13 +1961,13 @@ export class LayerManager { if (this.commandManager) { // 使用命令管理器执行命令 const result = await this.commandManager.execute(command); - // this.clipboardData = null; // 清空剪贴板数据 复制一次 + this.clipboardData = null; // 清空剪贴板数据 复制一次 // 执行命令 return result; } const result = await command.execute(); - // this.clipboardData = null; // 清空剪贴板数据 复制一次就清空,避免重复粘贴 出现 错误后也清空 总之就是清空 不用给自己找麻烦 + this.clipboardData = null; // 清空剪贴板数据 复制一次就清空,避免重复粘贴 出现 错误后也清空 总之就是清空 不用给自己找麻烦 // 执行命令 return result; }