Scratch 模块库

补间

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

动画补间

贡献者: LuYifei2011

脚本

线性

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

正弦

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

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

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

次方

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

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

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

指数

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

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

定义 指数 缓入和出 从 (起始值) 到 (结束值) 进度 (进度) %
将 [补间 v] 设为 ((进度) / (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] 设为 (((补间) * ((结束值) - (起始值))) + (起始值))

圆形

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

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

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

回弹

定义 回弹 缓入 从 (起始值) 到 (结束值) 进度 (进度) %
将 [补间 v] 设为 ((进度) / (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] 设为 (((补间) * ((结束值) - (起始值))) + (起始值))

定义 回弹 缓出 从 (起始值) 到 (结束值) 进度 (进度) %
将 [补间 v] 设为 ((进度) / (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] 设为 (((补间) * ((结束值) - (起始值))) + (起始值))

定义 回弹 缓入和出 从 (起始值) 到 (结束值) 进度 (进度) %
将 [补间 v] 设为 ((进度) / (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] 设为 (((补间) * ((结束值) - (起始值))) + (起始值))

弹性

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

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

定义 弹性 缓入和出 从 (起始值) 到 (结束值) 进度 (进度) %
将 [补间 v] 设为 ((进度) / (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] 设为 (((补间) * ((结束值) - (起始值))) + (起始值))

弹跳

定义 弹跳 缓出 从 (起始值) 到 (结束值) 进度 (进度) %
将 [补间 v] 设为 ((进度) / (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] 设为 (((补间) * ((结束值) - (起始值))) + (起始值))

定义 弹跳 缓入 从 (起始值) 到 (结束值) 进度 (进度) %
将 [补间 v] 设为 ((进度) / (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] 设为 (((补间) * ((结束值) - (起始值))) + (起始值))

定义 弹跳 缓入和出 从 (起始值) 到 (结束值) 进度 (进度) %
将 [补间 v] 设为 ((进度) / (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] 设为 (((补间) * ((结束值) - (起始值))) + (起始值))

变量 / 列表

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

参考链接