# AE循环表达式终极教程:4个内置表达式+全场景用法,新手也能快速上手
在AE制作动画时,重复动作(比如循环旋转、往返移动、持续运动)是高频需求。如果手动复制关键帧,不仅繁琐还容易出错,而AE内置的4个循环表达式,能轻松搞定所有循环场景,效率直接翻倍!
今天就带大家全面吃透AE循环表达式——从基础类型到参数差异,再到进阶控制技巧,新手也能一步步学会,看完直接套用~
## 一、先搞懂:4个核心循环表达式(基础必备)
AE内置的4个循环表达式,核心逻辑一致,仅适用场景有区别,先记牢这组“公式”:
- loopIn(type = "cycle", numKeyframes = 0)
- loopOut(type = "cycle", numKeyframes = 0)
- loopInDuration(type = "cycle", duration = 0)
- loopOutDuration(type = "cycle", duration = 0)
后面所有用法,都是围绕这4个表达式的参数调整展开,先记住“type(循环类型)、numKeyframes(关键帧数量)、duration(时长)”这三个核心参数,就能灵活变通~
## 二、关键技巧:4种循环类型(type参数用法)
所有循环表达式的`type`参数,都支持4种循环模式,以最常用的`loopOut`为例,用“关键帧1、2、3、4、5”做示例,一看就懂:
### 1. 圆形循环(cycle):重复同一动作
表达式:loopOut(type="cycle", numkeyframes=0)
效果:按关键帧顺序无限重复,模式为「12345→12345→12345……」
适用场景:需要固定重复的动作,比如时钟指针旋转、小球匀速弹跳、图标循环闪烁等。
### 2. 乒乓循环(pingpong):往返式循环
表达式:loopOut(type="pingpong", numkeyframes=0)
效果:正向播放完关键帧后反向回放,模式为「12345→54321→12345→……」
适用场景:往返运动,比如滑块左右移动、光线明暗交替、元素上下摆动等,避免动作生硬转折。
### 3. 偏移循环(Offset):自动延伸动作
表达式:loopOut(type="Offset", numkeyframes=0)
效果:根据现有关键帧轨迹,自动推算后续动作,模式为「123→456789……」(无限延伸至画面外)
适用场景:需要持续推进的动作,比如人物连续走台阶、文字依次滚动、粒子持续流动等,只需做一套动作,表达式自动补全后续。
### 4. 持续循环(continue):延续运动状态
表达式:loopOut(type="continue")
效果:延续最后一帧的运动方向和速度,无限延伸,模式为「123→3+n→……」(直至超出合成画面)
适用场景:加速/减速后的持续运动,比如物体抛出去后的惯性移动、光线匀速延伸、镜头持续推拉等。
## 三、核心差异:In/Out与numkeyframes/Duration怎么选?
很多人分不清“loopIn”和“loopOut”、“numkeyframes”和“duration”,其实核心是“循环方向”和“循环范围”的区别,用具体例子讲明白:
### 1. In vs Out:循环是“向前”还是“向后”?
- loopIn:在关键帧设定的时间段「之前」循环
举例:如果关键帧设定在6-8秒(一套完整动作),那么6秒之前的时间,会一直循环6-8秒的动作;到6秒时,衔接关键帧正常完成最后一套动作,8秒结束循环。
注:循环起始位置会根据前面空出的时长自动推算,不用手动调整。
- loopOut:在关键帧设定的时间段「之后」循环
举例:如果关键帧设定在4-6秒(一套完整动作),那么4秒之前的时间画面静止;4秒开始执行关键帧动作,6秒完成后,无限循环这套动作。
注:loopOut的循环开始时间,永远以第一帧关键帧为准,自定义开始时间仅限定“是否生效”,不改变起始点。
### 2. numkeyframes vs Duration:循环“关键帧”还是“时长”?
- numkeyframes(关键帧数量):控制参与循环的关键帧范围
默认值为0(循环所有关键帧),手动调整规则:
- loopIn中:numkeyframes=1→循环前2个关键帧,numkeyframes=2→循环前3个关键帧(依次递增);
- loopOut中:numkeyframes=1→循环最后2个关键帧,numkeyframes=2→循环最后3个关键帧(依次递增)。
适用场景:只想循环部分关键帧动作(比如前3个关键帧的旋转,忽略后面的位移)。
- Duration(时长):控制参与循环的动作时长
默认值为0(循环整套动作),手动调整规则:
- loopInDuration(duration=1):循环关键帧时间段中「前1秒」的动作(比如4-6秒的动作,只循环4-5秒部分);
- loopOutDuration(duration=1):循环关键帧时间段中「最后1秒」的动作(比如4-6秒的动作,只循环5-6秒部分)。
适用场景:只想循环动作中的某个片段(比如物体加速的最后1秒,持续循环该状态)。
## 四、进阶用法:自定义循环的开始/结束时间
默认循环是“从关键帧开始到合成结束”,但实际制作中,常需要限定循环时段(比如只在2-10秒循环),用下面的条件表达式就能实现:
```
timeToStart = 2; // 循环开始时间(单位:秒)
timeToStop = 10; // 循环结束时间(单位:秒)
if ((time > timeToStart) && (time < timeToStop)) {
loopIn(type="pingpong",numkeyframes=0); // 可替换为任意循环表达式
} else {
value; // 非循环时段保持原始状态
}
```
### 关键说明:
1. `&&`表示“同时满足”:只有时间在「开始时间-结束时间」之间,循环才生效;
2. 可自由替换循环表达式:把`loopIn(type="pingpong",numkeyframes=0)`换成任意之前讲的循环类型(比如`loopOut(type="cycle",numkeyframes=1)`);
3. 特殊规则:loopIn的结束时间由最后一帧关键帧控制,loopOut的开始时间由第一帧关键帧控制,自定义参数仅限定“循环是否生效”,不改变关键帧本身的循环逻辑;
4. 便捷技巧:可以搭配AE的“滑块控件”,把开始/结束时间做成可拖动的滑块,不用手动修改代码,调整更高效。
## 五、新手避坑&快速套用指南
1. 不确定用In还是Out?记住:想在关键帧「之前」循环用loopIn,想在关键帧「之后」循环用loopOut(loopOut更常用);
2. 只循环部分动作?用numkeyframes(按关键帧数量)或duration(按时长),默认0即可循环全部;
3. 循环动作生硬?优先选pingpong(往返)或Offset(偏移),避免动作突然转折;
4. 快速套用:先确定循环类型(比如cycle),再选In/Out(比如loopOut),最后按需调整numkeyframes/duration,不用死记硬背,多试两次就熟练。
AE循环表达式的核心就是“用参数控制循环的类型、范围、时段”,4个基础表达式+4种循环类型+2个核心参数,就能覆盖90%的循环场景。
新手可以先从最简单的`loopOut(type="cycle",numkeyframes=0)`开始,用一个简单的关键帧动作(比如旋转)测试效果,再逐步尝试其他类型和参数调整~ 熟练后,再也不用手动复制关键帧,动画制作效率直接翻倍!
如果有具体的循环场景(比如文字滚动、粒子循环),可以在评论区留言,帮你针对性写表达式~