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,