Scratch 代码库

补间

使用补间/插值实现平滑动画。

动画补间

贡献者: LuYifei2011

脚本

线性

定义 线性 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

正弦

定义 正弦 缓入 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
将 [补间 v] 设为 ((1) - ([cos v] ((补间) * (90))))
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 正弦 缓出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
将 [补间 v] 设为 ([sin v] ((补间) * (90)))
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 正弦 缓入和出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
将 [补间 v] 设为 (() - ((([cos v] ((补间) * (180))) - (1)) / (2)))
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

次方

// 可以更改指数:二次 / 三次 / 四次 / 五次

定义 二次 缓入 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
将 [补间 v] 设为 ((补间) * (补间)) // 三次:再乘一次;四次/五次:以此类推
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 二次 缓出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
将 [补间 v] 设为 ((1) - (补间))
将 [补间 v] 设为 ((补间) * (补间)) // 三次:再乘一次
将 [补间 v] 设为 ((1) - (补间))
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 二次 缓入和出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) < (0.5)> 那么
  将 [补间 v] 设为 ((2) * (补间))
  将 [补间 v] 设为 ((补间) * (补间)) // 三次:再乘一次
  将 [补间 v] 设为 ((补间) / (2))
否则
  将 [补间 v] 设为 (((-2) * (补间)) + (2))
  将 [补间 v] 设为 ((补间) * (补间)) // 三次:再乘一次
  将 [补间 v] 设为 ((1) - ((补间) / (2)))
结束
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

指数

引入模块 幂 (乘方) · 主脚本 (#1)
定义 (a :: custom-arg) 的 (b :: custom-arg) 次幂
将 [结果 v] 设为 ([e ^ v] ((b :: custom-arg) * ([ln v] (a :: custom-arg))))
定义 指数 缓入 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) = (0)> 那么
  将 [补间 v] 设为 (0)
否则
  (2) ^ (((10) * (补间)) - (10)) :: custom
  将 [补间 v] 设为 (result)
结束
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 指数 缓出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) = (1)> 那么
  将 [补间 v] 设为 (1)
否则
  (2) ^ ((-10) * (补间)) :: custom
  将 [补间 v] 设为 ((1) - (result))
结束
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 指数 缓入和出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) = (0)> 那么
  将 [补间 v] 设为 (0)
否则
  如果 <(补间) = (1)> 那么
    将 [补间 v] 设为 (1)
  否则
    如果 <(补间) < (0.5)> 那么
      (2) ^ (((20) * (补间)) - (10)) :: custom
      将 [补间 v] 设为 ((result) / (2))
    否则
      (2) ^ (((-20) * (补间)) + (10)) :: custom
      将 [补间 v] 设为 (((2) - (result)) / (2))
    结束
  结束
结束
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

圆形

定义 圆形 缓入 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
将 [补间 v] 设为 ((1) - ([平方根 v] ((1) - ((补间) * (补间)))))
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 圆形 缓出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
将 [补间 v] 设为 ([平方根 v] ((1) - (((补间) - (1)) * ((补间) - (1)))))
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 圆形 缓入和出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) < (0.5)> 那么
  将 [补间 v] 设为 ((2) * (补间))
  将 [补间 v] 设为 ((1) - ([平方根 v] ((1) - ((补间) * (补间)))))
  将 [补间 v] 设为 ((补间) / (2))
否则
  将 [补间 v] 设为 (((-2) * (补间)) + (2))
  将 [补间 v] 设为 ([平方根 v] ((1) - ((补间) * (补间))))
  将 [补间 v] 设为 (((补间) + (1)) / (2))
结束
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

回弹

定义 回弹 缓入 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
将 [补间 v] 设为 (((补间) * (补间)) * (((2.70158) * (补间)) - (1.70158)))
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 回弹 缓出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
将 [补间 v] 设为 ((补间) - (1))
将 [补间 v] 设为 ((((补间) * (补间)) * (((2.70158) * (补间)) + (1.70158))) + (1))
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 回弹 缓入和出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) < (0.5)> 那么
  将 [补间 v] 设为 ((补间) * (2))
  将 [补间 v] 设为 ((((补间) * (补间)) * (((3.5949095) * (补间)) - (2.5949095))) / (2))
否则
  将 [补间 v] 设为 (((补间) * (2)) - (2))
  将 [补间 v] 设为 (((((补间) * (补间)) * (((3.5949095) * (补间)) + (2.5949095))) + (2)) / (2))
结束
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

弹性

引入模块 幂 (乘方) · 主脚本 (#1)
定义 (a :: custom-arg) 的 (b :: custom-arg) 次幂
将 [结果 v] 设为 ([e ^ v] ((b :: custom-arg) * ([ln v] (a :: custom-arg))))
定义 弹性 缓入 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) = (0)> 那么
  将 [补间 v] 设为 (0)
否则
  如果 <(补间) = (1)> 那么
    将 [补间 v] 设为 (1)
  否则
    (2) ^ (((10) * (补间)) - (10)) :: custom
    将 [补间 v] 设为 (() - ((result) * ([sin v] ((((补间) * (10)) - (10.75)) * (120)))))
  结束
结束
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 弹性 缓出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) = (0)> 那么
  将 [补间 v] 设为 (0)
否则
  如果 <(补间) = (1)> 那么
    将 [补间 v] 设为 (1)
  否则
    (2) ^ ((-10) * (补间)) :: custom
    将 [补间 v] 设为 (((result) * ([sin v] ((((补间) * (10)) - (0.75)) * (120)))) + (1))
  结束
结束
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 弹性 缓入和出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) = (0)> 那么
  将 [补间 v] 设为 (0)
否则
  如果 <(补间) = (1)> 那么
    将 [补间 v] 设为 (1)
  否则
    如果 <(补间) < (0.5)> 那么
      (2) ^ (((20) * (补间)) - (10)) :: custom
      将 [补间 v] 设为 ((() - ((result) * ([sin v] ((((补间) * (20)) - (11.125)) * (80))))) / (2))
    否则
      (2) ^ (((-20) * (补间)) + (10)) :: custom
      将 [补间 v] 设为 ((((result) * ([sin v] ((((补间) * (20)) - (11.125)) * (80)))) / (2)) + (1))
    结束
  结束
结束
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

弹跳

定义 弹跳 缓出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) < (0.363636)> 那么
  将 [补间 v] 设为 ((7.5625) * ((补间) * (补间)))
否则
  如果 <(补间) < (0.727272)> 那么
    将 [补间 v] 设为 (((7.5625) * (((补间) - (0.545454)) * ((补间) - (0.545454)))) + (0.75))
  否则
    如果 <(补间) < (0.90909)> 那么
      将 [补间 v] 设为 (((7.5625) * (((补间) - (0.818181)) * ((补间) - (0.818181)))) + (0.9375))
    否则
      将 [补间 v] 设为 (((7.5625) * (((补间) - (0.954545)) * ((补间) - (0.954545)))) + (0.984375))
    结束
  结束
结束
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 弹跳 缓入 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
将 [补间 v] 设为 ((1) - (补间))
如果 <(补间) < (0.363636)> 那么
  将 [补间 v] 设为 ((7.5625) * ((补间) * (补间)))
否则
  如果 <(补间) < (0.727272)> 那么
    将 [补间 v] 设为 (((7.5625) * (((补间) - (0.545454)) * ((补间) - (0.545454)))) + (0.75))
  否则
    如果 <(补间) < (0.90909)> 那么
      将 [补间 v] 设为 (((7.5625) * (((补间) - (0.818181)) * ((补间) - (0.818181)))) + (0.9375))
    否则
      将 [补间 v] 设为 (((7.5625) * (((补间) - (0.954545)) * ((补间) - (0.954545)))) + (0.984375))
    结束
  结束
结束
将 [补间 v] 设为 ((1) - (补间))
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

定义 弹跳 缓入和出 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) < (0.5)> 那么
  将 [补间 v] 设为 ((补间) * (2))
  将 [补间 v] 设为 ((1) - (补间))
  如果 <(补间) < (0.363636)> 那么
    将 [补间 v] 设为 ((7.5625) * ((补间) * (补间)))
  否则
    如果 <(补间) < (0.727272)> 那么
      将 [补间 v] 设为 (((7.5625) * (((补间) - (0.545454)) * ((补间) - (0.545454)))) + (0.75))
    否则
      如果 <(补间) < (0.90909)> 那么
        将 [补间 v] 设为 (((7.5625) * (((补间) - (0.818181)) * ((补间) - (0.818181)))) + (0.9375))
      否则
        将 [补间 v] 设为 (((7.5625) * (((补间) - (0.954545)) * ((补间) - (0.954545)))) + (0.984375))
      结束
    结束
  结束
  将 [补间 v] 设为 ((1) - (补间))
  将 [补间 v] 设为 ((补间) / (2))
否则
  将 [补间 v] 设为 (((补间) * (2)) - (1))
  如果 <(补间) < (0.363636)> 那么
    将 [补间 v] 设为 ((7.5625) * ((补间) * (补间)))
  否则
    如果 <(补间) < (0.727272)> 那么
      将 [补间 v] 设为 (((7.5625) * (((补间) - (0.545454)) * ((补间) - (0.545454)))) + (0.75))
    否则
      如果 <(补间) < (0.90909)> 那么
        将 [补间 v] 设为 (((7.5625) * (((补间) - (0.818181)) * ((补间) - (0.818181)))) + (0.9375))
      否则
        将 [补间 v] 设为 (((7.5625) * (((补间) - (0.954545)) * ((补间) - (0.954545)))) + (0.984375))
      结束
    结束
  结束
  将 [补间 v] 设为 (((补间) + (1)) / (2))
结束
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

变量 / 列表

名称类型作用域
补间
变量角色

备注

此模块中的脚本可以用于替代 TurboWarp 的 补间 扩展。

注意:截至 2026/04/05,TurboWarp 补间扩展的中文简体翻译有误,详见 此处。因此,从 TurboWarp 补间扩展迁移到此模块时,请注意翻译差异。

参考链接

Cover Preview