您的位置:

AE循环动画表达式

AE(Adobe After Effects)是一款设计师常用的动效软件,而循环动画是设计中常见的一种元素。在AE中,循环动画表达式可以帮助设计师实现自动循环播放,极大提高了效率。本文将从不同角度详细讲解AE循环动画表达式的使用。

一、如何添加循环动画表达式

在AE中添加循环动画表达式很简单,只需要选择需要循环的动画属性,然后单击鼠标右键,选择“表达式”>“循环表达式”,即可添加循环表达式。对于同一个属性,也可以通过选中多个图层,然后对这些图层同时添加循环表达式。 下面是一个简单的例子,通过添加循环表达式,实现了一个无限旋转的形状层:
//循环表达式
xRotation = 360; //旋转一周
loopTime = 2; //两秒为一个循环
loopDuration = thisLayer.outPoint - thisLayer.inPoint; //一个循环的时间等于图层的总时间
cycles = Math.floor(loopTime / loopDuration) + 1; //计算需要循环的次数
value + xRotation * loops*time / loopDuration

二、循环动画表达式在哪

在AE中,循环动画表达式可以应用在几乎所有的动画属性上,例如位置、旋转、缩放等,甚至包括某些效果的属性。通过添加循环表达式,可以让这些属性自动循环播放,避免了手动复制粘贴的操作,提高了效率。

三、AE无限循环表达式

在AE中,有一个特殊的循环表达式--无限循环表达式(loopOut)。这个表达式可以让属性在图层的结束点自动循环回到开始点,从而实现无线循环。 举个例子,下面是一个简单的平移动画,通过加入循环表达式和无限循环表达式,实现了循环播放:
//循环表达式
loopDuration = 3; //每个循环的时间为3秒
loopCount = 2; //循环2次
valueAtTime(time % loopDuration); //通过取模计算每个循环的值

//无限循环表达式
loopOut(type="cycle");

四、快捷键

在AE中,还有一些快捷键可以帮助设计师快速添加循环表达式,提高效率。例如在添加循环表达式时,可以使用快捷键“alt+click”直接添加循环表达式。在编辑表达式时,可以使用快捷键“ctrl+alt+F”打开表达式编辑器。

五、循环动画表达式loopIn

除了loopOut,AE还提供了另一个循环表达式--loopIn,它可以让属性在图层的开始点自动循环回到结束点,从而实现不同的循环方式。通过使用这两个表达式的组合,可以创造出更加丰富的循环动画效果。 下面是一个例子,通过loopIn和loopOut组合,实现了一个在整个合成中不停滚动的文字:
//循环表达式
loopTime = 2; //两秒为一个循环
loopDuration = thisLayer.outPoint - thisLayer.inPoint;
cycles = Math.floor(loopTime / loopDuration) + 1;

//滚动文字,从顶部出现,到底部消失
start = [0, 0 - text.sourceRectAtTime().height];
end = [0, thisComp.height + text.sourceRectAtTime().height];
t = loops*time % loopDuration;
linear(t, 0, loopTime, start, end); //线性插值

//循环播放
loopOut(type="cycle");
loopIn(type="cycle");

六、循环动画表达式添加了不动

循环动画表达式添加了不动时,可能会出现一些问题。例如,下面是一个旋转动画,循环播放了三次后停止。但是当添加了hold表达式时,图层却变成了一直保持在最后一个状态,而不是停在循环的最后一帧。
//循环表达式
xRotation = 360; //旋转一周
loopTime = 2; //两秒为一个循环
loopDuration = thisLayer.outPoint - thisLayer.inPoint;
cycles = Math.floor(loopTime / loopDuration) + 1;

//保持最后状态
loopOut(type="cycle");
holdTime = loopDuration*(cycles-1);
if (time >= thisLayer.outPoint - holdTime) {
    valueAtTime(thisLayer.outPoint - holdTime);
} else {
    value + xRotation * loops*time / loopDuration;
}
为了解决这个问题,可以使用hold表达式,在循环播放结束时,让图层停在最后一个状态,而不是一直保持在该状态。例如:
//保持最后状态
xRotation = 360; //旋转一周
loopTime = 2; //两秒为一个循环
loopDuration = thisLayer.outPoint - thisLayer.inPoint;
cycles = Math.floor(loopTime / loopDuration) + 1;

loopOut(type="cycle");
holdTime = loopDuration*(cycles-1);
if (time >= thisLayer.outPoint - holdTime) {
    valueAtTime(thisLayer.outPoint - holdTime);
} else {
    value + xRotation * loops*time / loopDuration;
}

七、循环表达式小结

循环动画表达式是AE中常用的一种表达式,它可以帮助设计师实现自动循环播放,提高效率。AE中有多种循环表达式,包括loopOut、loopIn和无限循环表达式。在使用循环表达式时,可以使用一些快捷键来提高效率,同时注意一些常见问题,例如添加了hold表达式的问题。掌握循环动画表达式的使用,可以让设计师更加方便快捷地实现动画效果,提高工作效率。