关键帧速度本质是调节插值曲线形状而非直接调速;需通过曲线编辑器拖动贝塞尔控制点实现缓入缓出,不同工具操作逻辑各异,stretch仅拉伸时间区间而不改曲线形态。

关键帧速度不是“调快慢”,而是调曲线形状
Composer 类工具(如 3Dvia Composer、SOLIDWORKS Composer)里没有“关键帧速度”这个独立参数。所谓“动画太快/太慢”,其实是两个关键帧之间插值曲线的坡度问题——坡度陡,中间变化就猛;坡度缓,过渡就柔和。你不能直接设“0.5x 速度”,但能拖动贝塞尔控制点改变该段的加速度分布。
在时间轴上右键添加关键帧后,必须手动进曲线编辑器调控制点
默认插入的关键帧几乎总是线性(linear),视觉上就是“弹一下→匀速→顿一下”。要改,得打开曲线编辑器(通常叫 Curve Editor 或 Graph Editor),然后:
- 选中关键帧 → 按
Ctrl+Click(Windows)或Cmd+Click(macOS)拖出贝塞尔手柄 - 起始关键帧的手柄向下拉,制造缓入(slow-in);结束关键帧的手柄向上拉,制造缓出(slow-out)
- 若需模拟真实机构运动(如齿轮啮合),应让两段相邻曲线在连接点处切线连续(即左右手柄共线),否则会出现视觉卡顿
- 多个属性(如
rotation和translateX)必须各自调曲线,不能只调一个就以为全同步了
Android Compose 的 keyframes 里别漏传 easing
在 Compose 中写 keyframes 动画时,每段区间默认用 FastOutSlowInEasing,但它不适用于所有节奏。比如做机械往复运动,你就得显式覆盖:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
keyframes {
0.dp at 0 with LinearEasing
100.dp at 500 with LinearEasing
0.dp at 1000 with LinearEasing
}
注意三点:
-
LinearEasing≠ 线性插值失效,它只是让数值随时间均匀变化,适合位移类刚性运动 - 不写
with xxxEasing,就会回退到系统默认,且不会继承外层updateTransition的 timing - 混用
spring()和keyframes会导致插值断裂——物理模型和时间驱动不可桥接
Pixel-Composer 和 3Dvia Composer 的“Stretch”不是变速,是拉伸时间区间
有些用户误把时间轴上拖拽关键帧间距的 “Stretch” 功能当成调速。其实它只是把整段轨迹在时间轴上等比拉长或压缩,不改变曲线形状本身。后果是:
- 原先是 2 秒完成的旋转,Stretch 到 4 秒,动画变慢了,但起始/结束的“弹”和“顿”一点没少
- 如果已配音频或外部事件触发,Stretch 会破坏时序对齐
- 真正要控节奏,仍得进曲线编辑器调控制点,而不是靠 Stretch “凑时间”
最容易被忽略的是:同一套关键帧,在不同工具里生效的控制点逻辑完全不同——3Dvia Composer 用右键拖手柄,Pixel-Composer 用节点参数滑块,Android Compose 靠 DSL 写 easing。别指望一套操作走通所有场景。










