F7.03.3Spring easing on frequent triggers设计研究

弹性曲线不适合频繁触发的动效

别名: 过冲 · 弹簧曲线 · 弹性回弹

概念解释

弹簧曲线在到达之后还要过冲、回摆,才回到静止。第一次好看,是因为它把「有质量」演了出来。同一条曲线若绑在点赞、开关、步进器这类会连着触发的控件上,每一次回摆都会和下一次输入抢位置。弹性不适合高频,不是审美过时,是振荡周期和触发间隔撞车

机制

二阶系统的稳定时间长于「到达目标位置」的时间。过冲让命中区在目标两侧来回穿,指向要么等振荡结束,要么点在瞬时错误坐标上。若在回摆未完时再次触发,新的弹簧从中间态起步,相位叠加,出现拍频式的乱晃,对象像在自己打架。

低频大对象(首次打开的大面板)付得起一次过冲,因为循环里本来有停顿,振荡也只发生一次。高频小对象付不起:触发间隔往往短于稳定时间,曲线的「个性」变成持续扰动。这和把多段动画排队播放不是同一件事——即使每次都打断上一次,弹簧的中间态也带着速度,打断本身会留下一次额外甩动。

怎么研究

用可重复点击的控件,比较减速到达与弹簧过冲。自变量:触发间隔、阻尼比、过冲幅度。因变量:连续点击的成功率、两次点击间的位置方差、自述「还在晃」。频谱上可看点击后位置是否出现衰减振荡。

报告触发是由用户发出还是由列表自动交错发出:交错入场的弹簧会把振荡变成一场合唱,干扰比单次更大。

边界

  • 一次性的成功反馈、拖拽松手后的回位,弹簧可以留下物理性,前提是随后几秒没有连发。
  • 过阻尼弹簧接近普通减速,高频伤害会下降;有伤害的是欠阻尼、可见回摆的那一类。
  • 减弱动效模式下弹簧应直接取消,不要只缩短时长而保留过冲——短而晃比短而停更糟。

怎么落地

  • 把弹簧留给松手回位、首次展示、低频成功反馈;开关、点赞、列表行、步进器改用无过冲的减速。
  • 若必须保留弹性,提高阻尼直到肉眼看不到回摆,或禁止在稳定前接受下一次触发。
  • 验证:按产品真实的连点速度点 10 次,看对象是否在目标附近振荡。仍在晃,这条曲线就不该绑在该控件上。

延伸

  • 同组F7.03.1 匀速运动显得机械且不自然 · F7.03.2 入场宜快出慢,出场宜慢入快
  • 相邻F7.11.3 连续快速操作触发的动效应合并或跳过而非排队播放 · F7.10 动效滥用
  • 站内检索spring easing · overshoot · settling time

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/F7.03.3