gui.gui_anim
过渡动画纯函数库(GUI-42 v1;波一;零引擎缝)
定位:纯函数库非视图(不进 gui_widgets 组件包;门面 re-export,消费 use gui.{anim_i} 形态不变)。地基=bind 每帧重算+值驱动 w/h(GUI-16)+ gui_now 注入时钟(d_tick 确定性)——动画闭环纯库即可,零引擎改动。
算术纪律:I32 千分比全域(进度/ease 入出 0-1000),无 F64、无位运算、 无除零(除数恒 1000/1e6 常量或钳正);中间量上限 ~5e8 < I32 max。 时间源=gui_now()(注入优先:headless d_tick 钉相位,真窗真时钟)。
消费形态(值驱动槽):
view Grow (t0: I32) {
pub fn
| Signature | Returns | Description |
|---|---|---|
anim_prog(now: I32, t0: I32, ms: I32) |
I32 |
进度千分比:t0 起 ms 毫秒内 0→1000,钳位(elapsed<0→0,≥ms→1000,ms≤0 恒 1000) |
ease_linear(u: I32) |
I32 |
线性 |
ease_out_cubic(u: I32) |
I32 |
出立方:1-(1-u)^3;千分比恒等式 1000-(1000-u)^3/1e6(中间量 ≤1e9) |
ease_in_cubic(u: I32) |
I32 |
入立方:u^3/1e6 |
ease_in_out(u: I32) |
I32 |
入出平滑:前半 4u^3/1e6,后半 1000-4(1000-u)^3/1e6(中点 500 恒等) |
ease_out_back(u: I32) |
I32 |
出回弹:过冲 ~8% 后回落(1+c3 x^3+c1 x^2,x=u-1000;先除后乘防爆 I32; c1=1702 整除补偿,u=0 处舍入 -1→+1) |
lerp_i(a: I32, b: I32, p: I32) |
I32 |
千分比插值:a→b 按 p(0-1000;反向 b<a 同式) |
anim_i(now: I32, t0: I32, ms: I32, a: I32, b: I32, ease: fn(I32) -> I32) |
I32 |
组合帮手:t0 起 ms 毫秒,ease 曲线从 a 到 b(bind 每帧重算,值驱动槽直接消费) |
anim_linear(now: I32, t0: I32, ms: I32, a: I32, b: I32) |
I32 |
—— ease 定形包装族(bxv 槽不持 fn 实参;宿主 bind 帧算经 prop 通道消费)—— |
anim_out_cubic(now: I32, t0: I32, ms: I32, a: I32, b: I32) |
I32 |
— |
anim_in_cubic(now: I32, t0: I32, ms: I32, a: I32, b: I32) |
I32 |
— |
anim_in_out(now: I32, t0: I32, ms: I32, a: I32, b: I32) |
I32 |
— |
anim_out_back(now: I32, t0: I32, ms: I32, a: I32, b: I32) |
I32 |
— |