动画不是播放,而是空间状态的连续解析。所有动画基于 [0.0, 1.0] 空间状态值,帧率无关,可中断。
| 原语 | 用途 | 特性 |
|---|---|---|
| SpringAnim | 位移、缩放、面板滑动、页面切换 | 阻尼振荡器解析解,帧率无关,可中断 |
| Progress | 透明度、颜色渐变、定时序列 | 时长驱动线性插值,可中断 |
| MetroAnim | UWP Metro 风格短时过渡 | 11 种缓动变体 × 3 种方向 |
// 1. 在应用状态中持有动画实例 let mut sidebar_anim = SpringAnim::new(0.4, 0.825, 0.0); // response, damping, initial // 2. 在事件处理器中设定目标 sidebar_anim.set_target(1.0); // 0.0=收起, 1.0=展开 // 3. 每帧更新(dt 来自渲染循环) sidebar_anim.update(dt); if !sidebar_anim.is_steady() { ctx.request_repaint(); } // 4. 渲染时读取 value(),绝不修改动画状态 let width = map_range_clamped(sidebar_anim.value(), 48.0, 200.0) as f32;
即応エンジン・ビジュアライザー——Sokuou Engine 的官方可视化调试工具。加载任意项目的 Sokuou 源码,将每个动画 API 的数学行为绘制为 p-t 曲线图,帮助开发者直观理解、调试和比较动画参数。
拖动 response/damping 滑块,实时看到曲线变化,不再靠直觉猜参。
加载 Sokuou 源码即可看到每个 API 的数学行为。
修改核心算法后,用曲线快速验证行为是否一致。
SpringAnim、Progress、Easing、map_range、UWP Metro 各视图均支持多曲线对比。
syn 解析 Rust 源码 → SokuouApi,引擎以 git submodule 单向同步。
曲线截图可直接用于设计文档与 API 参考。
合成器是唯一渲染权威。
所有动画由 Progress 原语统一驱动——非 timeline,非 keyframe,非 UI tween 库。
任意 progress 值对应唯一确定渲染结果。