第4节 循环表达式
当动画中需要出现不断重复的动作时,通常的方法是对关键帧进行复制粘贴,但是这种方法不但效率低,得到的结果也往往不够精确。这时如果使用循环表达式来处理将事半功倍。
提示
循环表达式的使用前提是必须有关键帧动画,循环相当于将已有的关键帧动画进行重复播放。
知识点1 添加循环表达式的方法
为需要制作循环动画的属性添加表达式,在“表达式语言”下拉菜单中执行“Property-loopOut(type="cycle",numkeyframes=0”命令即可,如图1-25所示。
图1-25
提示
loopOut和loopIn的区别。
loopOut是指向时间轴的右侧进行循环,即在将来的时间内进行循环;而loopIn是指向时间轴的左侧进行循环,即在过去的时间内循环。
知识点2 循环语句解读
循环表达式语句结构如图1-26所示。
图1-26
常用的循环类型包括3种:“cycle”(周期型)、“pingpong”(弹动型)和“continue”(持续型)。这3种类型的循环会在后面的案例中分别进行讲解。
有效的关键帧段数是指循环从图层的最后一个关键帧开始,一直播放到图层的出点。要循环的片段由“numKeyframes”值决定。
“numKeyframes”值是用来确定循环全部关键帧中的倒数几段的,例如“numKeyframes=3”为循环倒数3段关键帧动画,“numKeyframes=0”为循环全部关键帧。
知识点3 3种循环类型
下面通过实例来讲解3种不同类型的循环。
在本课素材包中找到并打开“循环源文件.aep”文件,得到图1-27所示的卡通风格场景。
图1-27
1. “cycle”(周期型)
“cycle”是默认的循环类型,作用是重复指定段的动画,效果相当于单纯的循环播放。
■ 步骤01 制作太阳光动画
展开形状图层“太阳”,执行“内容-形状1-修剪路径”命令。在第0帧处为修剪路径效果的开始和结束属性添加关键帧,将时间指示器拖曳至第10帧处,将开始和结束值都调至“100%”,完成阳光发散动画,如图1-28所示。
图1-28
在时间轴面板中的第18帧处,分别单击开始和结束属性左侧的“在当前时间添加和移除关键帧”按钮,为动画插入定帧,使动画过程中间停止。
■ 步骤02 循环太阳光动画
分别为修剪路径效果的开始和结束属性添加表达式,单击“表达式语言”按钮执行“Property-loopOut(type="cycle",numkeyframes=0”命令,效果如图1-29所示。
图1-29
2. “pingpong”(弹动型)
“pingpong”的循环方式是重复指定段,并向前和向后交替。
其效果相当于“正向+反向”的循环播放,通常用来实现往复运动的效果。在本例中,云彩和小树的运动就是这种往复运动。
■ 步骤01 制作小树动画
选中“小树1”图层,执行“效果-扭曲-CC Bend It”(弯曲)命令。在效果控制器面板中将Start属性的位置定位在小树的根部,将End属性的位置定位在小树的顶部,如图1-30所示。
图1-30
在第0帧处,调整Bend属性值为“-20”并添加关键帧,在第1秒处,将Bend属性值调为“20”并添加关键帧。选中两个关键帧并按快捷键F9使动画缓动,如图1-31所示。
图1-31
■ 步骤02 循环小树动画
为Bend属性添加表达式,单击“表达式语言”按钮,执行“Property-loopOut(type="cycle",numkeyframes=0”命令,将循环类型“cycle”改为“pingpong”,即可实现小树往复摆动动画,如图1-32所示。
图1-32
对“小树2”和“小树3”图层进行相同操作,并将3棵小树的关键帧适当错开,使动画富有变化,完成3棵小树的动画。
■ 步骤03 制作云彩动画
为“云1”和“云2”图层中的圆角矩形的位置和大小属性制作动画,完成云彩左右摆动和形状变化的动画。选中“云1”图层,展开“内容-矩形2-矩形路径1”,为位置和大小属性添加表达式,并使用循环语句实现动画的循环,方法和制作小树动画类似,如图1-33所示。
图1-33
3. “continue”(持续型)
“continue”循环的特点是不重复指定段,但会继续基于第一个或最后一个关键帧的已有动画对属性动画加以延伸,也就是说会按照原有动画的方向和速度继续循环。
■ 步骤01 汽车动画准备
将“前轮”和“后轮”图层选中,通过父子关联器将两个轮子设定为“汽车”图层的子级。为“前轮”图层的旋转属性添加表达式,并通过表达式关联器。链接到“汽车”图层的位置属性上,使得“前轮”图层的旋转和“汽车”图层的位置属性产生关联。为了使车轮转速快些,可以在表达式后面输入“*2”使转速加倍。然后对“后轮”图层进行相同的操作,如图1-34所示。
图1-34
提示
“continue”循环并不是重复之前的关键帧片段,而是要将关键帧继续执行下去,和“numkeyframes”指向关键帧片段的方式是不一致的。所以“continue”这种循环方式不接受“keyframes”或“duration”参数,需要从其语句中删除。
■ 步骤02 汽车动画制作
先将汽车拖曳至画面外,在第0帧处为“汽车”图层的位置属性添加关键帧。将时间指示器拖曳到第1秒处,在查看器面板中将汽车向右拖曳到窗口内。为“汽车”图层的位置属性添加表达式,执行“Property-loopOut(type="cycle",numkeyframe=0”命令,将循环类型写为“continue”,并将“numkeyframe=0”删除,汽车就会按照原有的速度继续向前开,如图1-35所示。
图1-35
最终完成效果如图1-36所示。
图1-36
至此,本小节已讲解完毕。请扫描图1-37所示二维码观看本小节几个小动画的详细操作视频。
图1-37