F7.03.3Spring easing on frequent triggers设计研究
弹性曲线不适合频繁触发的动效
别名: 过冲 · 弹簧曲线 · 弹性回弹
概念解释
弹簧曲线在到达之后还要过冲、回摆,才回到静止。第一次好看,是因为它把「有质量」演了出来。同一条曲线若绑在点赞、开关、步进器这类会连着触发的控件上,每一次回摆都会和下一次输入抢位置。弹性不适合高频,不是审美过时,是振荡周期和触发间隔撞车。
机制
二阶系统的稳定时间长于「到达目标位置」的时间。过冲让命中区在目标两侧来回穿,指向要么等振荡结束,要么点在瞬时错误坐标上。若在回摆未完时再次触发,新的弹簧从中间态起步,相位叠加,出现拍频式的乱晃,对象像在自己打架。
低频大对象(首次打开的大面板)付得起一次过冲,因为循环里本来有停顿,振荡也只发生一次。高频小对象付不起:触发间隔往往短于稳定时间,曲线的「个性」变成持续扰动。这和把多段动画排队播放不是同一件事——即使每次都打断上一次,弹簧的中间态也带着速度,打断本身会留下一次额外甩动。
怎么研究
用可重复点击的控件,比较减速到达与弹簧过冲。自变量:触发间隔、阻尼比、过冲幅度。因变量:连续点击的成功率、两次点击间的位置方差、自述「还在晃」。频谱上可看点击后位置是否出现衰减振荡。
报告触发是由用户发出还是由列表自动交错发出:交错入场的弹簧会把振荡变成一场合唱,干扰比单次更大。
边界
- 一次性的成功反馈、拖拽松手后的回位,弹簧可以留下物理性,前提是随后几秒没有连发。
- 过阻尼弹簧接近普通减速,高频伤害会下降;有伤害的是欠阻尼、可见回摆的那一类。
- 减弱动效模式下弹簧应直接取消,不要只缩短时长而保留过冲——短而晃比短而停更糟。
怎么落地
- 把弹簧留给松手回位、首次展示、低频成功反馈;开关、点赞、列表行、步进器改用无过冲的减速。
- 若必须保留弹性,提高阻尼直到肉眼看不到回摆,或禁止在稳定前接受下一次触发。
- 验证:按产品真实的连点速度点 10 次,看对象是否在目标附近振荡。仍在晃,这条曲线就不该绑在该控件上。