diff --git a/packages/webgal/src/Core/controller/stage/pixi/PixiController.ts b/packages/webgal/src/Core/controller/stage/pixi/PixiController.ts index e361db81f..9bf9333ab 100644 --- a/packages/webgal/src/Core/controller/stage/pixi/PixiController.ts +++ b/packages/webgal/src/Core/controller/stage/pixi/PixiController.ts @@ -303,6 +303,14 @@ export default class PixiStage { this.removeAnimationByIndex(index); } + public removeAnimationByTargetKey(targetKey: string) { + let index = this.stageAnimations.findIndex((e) => e.targetKey === targetKey); + while (index !== -1) { + this.removeAnimationByIndex(index); + index = this.stageAnimations.findIndex((e) => e.targetKey === targetKey); + } + } + public removeAnimationWithSetEffects(key: string) { const index = this.stageAnimations.findIndex((e) => e.key === key); if (index >= 0) { diff --git a/packages/webgal/src/Core/util/syncWithEditor/webSocketFunc.ts b/packages/webgal/src/Core/util/syncWithEditor/webSocketFunc.ts index 26a863ed3..6e9fb66f8 100644 --- a/packages/webgal/src/Core/util/syncWithEditor/webSocketFunc.ts +++ b/packages/webgal/src/Core/util/syncWithEditor/webSocketFunc.ts @@ -120,6 +120,7 @@ export const webSocketFunc = () => { ...(effect.transform?.scale ?? {}), }, }; + WebGAL.gameplay.pixiStage?.removeAnimationByTargetKey(effect.target); webgalStore.dispatch(stageActions.updateEffect({ target: effect.target, transform: newTransform })); } catch (e) { logger.error(`无法设置效果 ${message.message}, ${e}`);