From ed50ad122f6a4d0f0891b78f62a1908cf151353e Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Wed, 9 Sep 2026 17:16:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B5=84=E6=BA=90=E7=94=BB?= =?UTF-8?q?=E6=9C=AC=E5=8A=A8=E7=94=BB=E7=BB=93=E6=9D=9F=E7=9E=AC=E9=97=B4?= =?UTF-8?q?=E7=9A=84=E4=BD=8D=E7=BD=AE=E8=B7=B3=E5=8F=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 动画期间卡片尺寸/位置一变(子画布卡片尺寸要等预览图尺寸到位才算准,通常正好落在动画末尾),原先直接 settle 掉动画,真实场景瞬间接管,表现为结束瞬间跳一下 改为从当前叠加层几何重定向:begin 捕获当前飞行位置,再平滑续到新的目标位置,动画不再被掐断 补充 effect 依赖 resourceBookState.phase --- .../src/view/project-development/index.tsx | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/apps/ai-game-creator-shell/src/view/project-development/index.tsx b/apps/ai-game-creator-shell/src/view/project-development/index.tsx index ce3b2b25f..acaf0134b 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/index.tsx +++ b/apps/ai-game-creator-shell/src/view/project-development/index.tsx @@ -2585,10 +2585,31 @@ export default function ProjectDevelopmentView({ previous.resources !== current.resources || previous.sortMode !== current.sortMode) ) { - resourceBookTransitionControllerRef.current.settle(); + // 卡片尺寸要等预览图尺寸到位才算准,通常正好落在动画末尾;直接 settle + // 会让真实场景瞬间接管,看起来就是结束瞬间跳一下。改为从当前叠加层几何 + // 重定向,动画平滑续到新的目标位置。 + const manager = resourceBookManagerRef.current; + const controller = resourceBookTransitionControllerRef.current; + if (resourceBookState.phase !== 'idle' && manager) { + const retargetToken = controller.begin(manager); + controller.play( + manager, + retargetToken, + () => { + dispatchResourceBook({ + type: 'finish-transition', + token: resourceBookState.token, + }); + }, + resourceBookState.phase === 'returning-main' ? 'target' : 'source', + ); + } else { + controller.settle(); + } } }, [ resourceBookState.token, + resourceBookState.phase, activeResourceCanvasViewport, resourceBookOverviewRects, resourcePositionById,