前言
最近在写动画相关的篇章,经常会用到 Curve
这个动画曲线类,那这个类到底怎么实现的?如果想自己来一个自定义的动画曲线该怎么弄?本篇我们就来一探究竟。
Curve 类定义
查看源码, Curve
类定义如下:
abstract class Curve extends ParametricCurve<double> {
const Curve();
@override
double transform(double t) {
if (t == 0.0 || t == 1.0) {
return t;
}
return super.transform(t);
}
Curve get flipped => FlippedCurve(this);
}
看上去好像没定义什么, 实际这里只是做了两个处理,一个是明确的数据类型为 double
,另一个是对 transform
做了重载,也只是对参数 t 做了特殊处理,保证参数 t 的范围在0-1之间,且起点值0.0和终点值1.0不被转换函数转换。主要定义在上一层的ParametricCurve
。文档是建议子类重载transformInternal
方法,那我们就继续往上看ParametricCurve
这个类的实现,代码如下:
abstract class Parametr