diff --git a/src/component/Canvas/CanvasEditor/managers/liquify/LiquifyManager.js b/src/component/Canvas/CanvasEditor/managers/liquify/LiquifyManager.js index dfe573f7..5475501b 100644 --- a/src/component/Canvas/CanvasEditor/managers/liquify/LiquifyManager.js +++ b/src/component/Canvas/CanvasEditor/managers/liquify/LiquifyManager.js @@ -46,6 +46,9 @@ export class LiquifyManager { // 初始化液化管理器 this.initialize(); + + // 新增:液化操作串行Promise队列 + this._liquifyPromise = Promise.resolve(); } /** @@ -125,30 +128,45 @@ export class LiquifyManager { * @returns {ImageData} 处理后的图像数据 */ async applyLiquify(targetObject, mode, params, x, y) { - if (!this.enhancedManager || !targetObject) { - console.error("液化管理器未正确初始化"); - return null; - } - - console.log(`LiquifyManager.applyLiquify: 模式=${mode}, 坐标=(${x}, ${y}), 参数=`, params); - - try { - // 直接调用EnhancedLiquifyManager的applyLiquify方法 - // 避免重复设置参数,让EnhancedLiquifyManager处理参数设置 - const resultData = await this.enhancedManager.applyLiquify(targetObject, mode, params, x, y); - - // 确保返回结果数据 - if (!resultData) { - console.warn("液化变形没有返回结果数据"); - } else { - console.log("✅ 液化变形成功,返回图像数据尺寸:", resultData.width, "x", resultData.height); + // 串行化:等待上一次液化操作完成 + this._liquifyPromise = this._liquifyPromise.then(async () => { + if (!this.enhancedManager || !targetObject) { + console.error("液化管理器未正确初始化"); + return null; } - return resultData; - } catch (error) { - console.error("液化变形应用失败:", error); - return null; - } + console.log( + `LiquifyManager.applyLiquify: 模式=${mode}, 坐标=(${x}, ${y}), 参数=`, + params + ); + + try { + // 直接调用EnhancedLiquifyManager的applyLiquify方法 + const resultData = await this.enhancedManager.applyLiquify( + targetObject, + mode, + params, + x, + y + ); + if (!resultData) { + console.warn("液化变形没有返回结果数据"); + } else { + console.log( + "✅ 液化变形成功,返回图像数据尺寸:", + resultData.width, + "x", + resultData.height + ); + } + return resultData; + } catch (error) { + console.error("液化变形应用失败:", error); + return null; + } + }); + // 返回当前Promise,保证外部可await + return this._liquifyPromise; } /**