1.在形状图层路径K几个关键帧
2.添加表达式(看附加)
myPath = thisProperty;
t1 = myPath.key(1).time;
t2 = myPath.key(numKeys).time;
sl = t2-t1;
t = Math.abs((time-t1)%sl)+t1
if (time <t1){
t = t1;
}
myPath.createPath(myPath.points(t), myPath.inTangents(t), myPath.outTangents(t), true);
3.效果
附加
之前我用的是重新读取并创建形状,还是挺麻烦的。鹤鹤写的是基于“路径”本身进行的循环,而且支持多种模式。
请见B站专栏AE表达式 – 万能循环
function loopPlus(mode, type) {
type = type || 'cycle';
mode = mode || 'out';
if (numKeys > 1) {
trueTime = (mode == 'out') ? (time - key(1).time) : (key(numKeys).time - time);
trueDuration = (mode == 'out') ? (key(numKeys).time - key(1).time) : (key(numKeys).time - key(1).time);
t1 = trueTime % trueDuration;
t2 = (trueTime % (2 * trueDuration) >= trueDuration) ? (trueDuration - trueTime % trueDuration) : (trueTime % trueDuration);
t = (type == 'cycle') ? t1 : t2;
return valueAtTime((type == 'cycle') ? (t + key(1).time) : (key(numKeys).time - t));
}
else { return value; }
}
loopPlus("out", "cycle");