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))

次方

// You can change exponent: square / cubic / quartic / quintic

定义 二次 缓入 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
将 [补间 v] 设为 ((补间) * (补间)) // cubic: multiply again; quartic/quintic: and so on
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

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

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

指数

引入模块 幂 (乘方) · 主脚本 (#1)
定义 (a :: custom-arg) ^ (b :: custom-arg)
将 [a^b v] 设为 (1)
重复执行 (b :: custom-arg) 次
  将 [a^b v] 设为 ((a^b) * (a :: custom-arg))
结束
定义 指数 缓入 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) = (0)> 那么
  将 [补间 v] 设为 (0)
否则
  (2) ^ (((10) * (补间)) - (10)) :: custom
  将 [补间 v] 设为 (a^b)
结束
将 [补间 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) - (a^b))
结束
将 [补间 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] 设为 ((a^b) / (2))
    否则
      (2) ^ (((-20) * (补间)) + (10)) :: custom
      将 [补间 v] 设为 (((2) - (a^b)) / (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] 设为 ((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.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))
如果 <(补间) < (0.5)> 那么
  将 [补间 v] 设为 ((补间) * (2))
  将 [补间 v] 设为 ((补间) / (100))
  将 [补间 v] 设为 ((补间) * (100))
  将 [补间 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] 设为 ((补间) / (2))
  将 [补间 v] 设为 ((补间) + (0.5))
结束
将 [补间 v] 设为 (((补间) * ((结束值 :: custom-arg) - (起始值 :: custom-arg))) + (起始值 :: custom-arg))

弹性

引入模块 幂 (乘方) · 主脚本 (#1)
定义 (a :: custom-arg) ^ (b :: custom-arg)
将 [a^b v] 设为 (1)
重复执行 (b :: custom-arg) 次
  将 [a^b v] 设为 ((a^b) * (a :: custom-arg))
结束
定义 弹性 缓入 从 (起始值 :: custom-arg) 到 (结束值 :: custom-arg) 进度 (进度 :: custom-arg) %
将 [补间 v] 设为 ((进度 :: custom-arg) / (100))
如果 <(补间) = (0)> 那么
  将 [补间 v] 设为 (0)
否则
  如果 <(补间) = (1)> 那么
    将 [补间 v] 设为 (1)
  否则
    (2) ^ (((10) * (补间)) - (10)) :: custom
    将 [补间 v] 设为 (() - ((a^b) * ([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] 设为 (((a^b) * ([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] 设为 ((() - ((a^b) * ([sin v] ((((补间) * (20)) - (11.125)) * (80))))) / (2))
    否则
      (2) ^ (((-20) * (补间)) + (10)) :: custom
      将 [补间 v] 设为 ((((a^b) * ([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))

变量 / 列表

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

参考链接