在《【AE表达式】更好的动画时间控制》这篇文章中说过我比较不是很喜欢用关键帧来控制动画,这是有一定条件的。使用表达式控制动画更多的是强调复用性,比如你拿到我的工程文件,不管是显示的内容、尺寸、颜色或者动画持续的时间都可以轻松的修改,而不需要再去找哪个关键帧对应着哪一段动作,它更多的工作都是由预定的程序去处理的,你只需要告诉它你要什么就够了。
在开始之前,你有必要再熟悉一下插值方法的章节:
https://helpx.adobe.com/cn/after-effects/user-guide.html/cn/after-effects/using/expression-language-reference.ug.html#interpolation_methods_expression_reference![v2-1295311c22bbcfcca2b5c216cb71284e_b.gif](https://img-blog.csdnimg.cn/img_convert/23d87c0e098d1bff0946bd9990deea2b.png)
今天演示的这段文本动画非常的简单,你仔细看一下,让整个动画显得生动活泼的有两点:第一是缓出(easeOut)关键帧,它让图形的运动不像线性插值(linear)那么生硬;第二是摆动赋予了物体灵魂,让它感觉比较活泼,而不是死死的僵在那里。
![v2-0c07f6861848019eaa072d908efc3cbe_b.jpg](https://img-blog.csdnimg.cn/img_convert/1b22a81830dfbeb65940cf4e637fbd03.png)
上面的右箭头关键帧就是 easeOut 插值关键帧了,下面是我们比较常用的线性关键帧,只需要选中关键帧,然后 shift+F9 就可以转换成 easeOut,你可以在图表编辑器中查看它们的差别(注意:图表编辑器显示和设置的是值与时间的关系而非空间关系):
![v2-3412b39cbd8f8ea8c1c0fbfdf0692447_b.jpg](https://img-blog.csdnimg.cn/img_convert/486db9725f50dc194e995522a65083fa.png)
先看工程,为了便于管理和演示,所有内容都放在了一个合成中,如果大量复用,可以考虑使用预合成减少设置,这样更不容易出错。
![v2-18c9bf16dbd2de59bd305b0f95063909_b.jpg](https://img-blog.csdnimg.cn/img_convert/e198e578533ba08b4e4b3ed66f07a86d.png)
控件形状动画
![v2-6e26232f6a130b2a9b85ab2b2e756d29_b.jpg](https://img-blog.csdnimg.cn/img_convert/b906f95e7d3e3fac3468a34580d0325f.png)
控件形状指的就是上面圈出来的这个部分,由一个形状图层来生成,这个部分也是整个设计的核心部分,所有的运动和定位都以它为参照。为了方便,我把所有的表达式控制设置也放在了这个图层上面。
![v2-829c2ba43829fc911f2ca75f424216a3_b.jpg](https://img-blog.csdnimg.cn/img_convert/0b7d147884ffb607f3dffb1ba930d3ee.png)
这个控件中有三个圆点和一个路径线条,路径线条是根据三个圆点的位置通过 createPath() 方法 生成的,所以你根本不需要管它。
![v2-4a9d6d0dab6f06c4f7c9be57b3e7a5ee_b.jpg](https://img-blog.csdnimg.cn/img_convert/8c46e66d72b6fc6b76095fb74fea327c.png)
圆点的尺寸利用表达式做了 IN 和 OUT 动画,在前一篇文章中也讲过,但是这一次我们要让进入和退出在同一个属性中利用表达式来完成,就需要调整一下写法:
// 进入,从图层入点到入点后 0.4秒,从 0 过渡至设定值
value = easeOut(time, inPoint, inPoint + .4, 0,