/** * narration_stage.jsx · 解说驱动 Stage * * ╔══════════════════════════════════════════════════════════════════╗ * ║ 🛑 用这套工具之前必读:references/voiceover-pipeline.md ║ * ║ ║ * ║ 铁律 #1: 整片是一个连续的运动叙事,不是一组独立场景 ║ * ║ You are not making 7 slides. You are directing 1 movie. ║ * ║ ║ * ║ 铁律 #2: 选定 hero element 跨 scene 持续存在,不要每段一个新布局║ * ║ ║ * ║ 铁律 #3: scene 之间禁止硬切(opacity 1→0/0→1) ║ * ║ 要 morph,不要 cut ║ * ║ ║ * ║ 失败模式 #1(本 skill v1 实战踩坑): ║ * ║ 每个 Scene 各自独立 layout + cue 用 fade-up + scene 切换║ * ║ 整页 opacity 切换 = 带配音的 PowerPoint = 质感归零 ║ * ║ ║ * ║ 正确做法:把 hero 直接放在 子级(不进 Scene) ║ * ║ 用 useNarration() 在 hero 里读 time/scene/cue 状态 ║ * ║ hero 自己根据当前时间决定形态 → 跨 scene 连续运动 ║ * ╚══════════════════════════════════════════════════════════════════╝ * * 用法(inline 进 HTML 的