Appearance
动作播放控制
系统概览
动作播放的 UI 控制与进度管理模块。负责播放/暂停按钮、进度条拖动(seek)、时间显示格式、 自动循环(auto-loop)状态维护,以及 MMD runtime observable 回调的聚合。与 vmd-loader.ts 协作, 后者负责加载动作数据,本模块专注 UI 反馈。
核心职责
playback.ts— 播放状态管理、进度 UI 更新、auto-loop 控制、runtime 回调注册/清理。
对外 API(节选)
initPlaybackObservables(runtime, manager, updatePlaybackUI, updateProcMotion, getProcBeatDetector)— 注册 runtime 回调,返回清理函数。updatePlaybackUI()— 刷新播放进度 UI(时长、当前时间、进度条)。_getDuration(runtime, manager)— 取当前聚焦模型动画时长。_loopPending— 标记 auto-loop 进行中(防 UI 闪烁)。
与其他子系统关系
- 上游:
vmd-loader.ts加载动作后触发播放。 - 下游:
@/core/config的isPlaying/setIsPlaying/autoLoop/seekDragging。 - 协作者:
@/core/audio(音频同步)、../camera/camera(相机 VMD 动画)。 - 模块引用
model-manager以参数形式注入(避免 ES module 循环依赖)。
不变量
_disposed双清理防护:dispose()可多次调用但只执行一次清理。_manager在 init 中注入、dispose 中清零,外部不直接修改。