章节大纲

https://mp.weixin.qq.com/s/0OjWEL_OSB0hjJ7IkFJnZg

1 表达式的概念与应用方法

数值

在表达式中属性的变化可以用数值的方式表达
不透明度
旋转

位置(英文字符;2维参数,不是1维参数,)

数组[0,1,2,3,4]

在多维参数的取值过程中,可以用数组的方式表现
缩放
表达式添加给[

time

时间函数
时间函数可以添加给任意属性

time%n 时间重映射中的循环

| | 2 常用表达式 | |

loopOut

循环函数
周而复始的循环:
loopOut(type = “cycle”, numKeyframes = 0)

乒乓球一样的来回循环:
loopOut(type=”pingpong”,numkeyframes=0)

延续属性变化的最后速度:
loopOut(type=”continue”)

重复指定的时间段进行循环:
loopOut(type=”offset”,numkeyframes=0)

Wiggle(x,y)

X=频率(设置每秒抖动的频率)
y=振幅(每次抖动的幅度)

弹性表达式

amp表示振幅,freq表示频率,decay表示衰减
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time){n—;}}
if (n == 0){t = 0;}else{
t = time - key(n).time;}
if (n > 0){
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
amp = .1;
freq = 2.5;
decay = 4.0;
value + vampMath.sin(freqt2Math.PI)/Math.exp(decayt);
}else{value;}

反弹表达式

k表示反弹最终结果,a表示反弹阻力,b表示反弹变化时间
k=100;
a=10;
b=2;
x=k(1-Math.exp(-atime)Math.cos(btime));
[x,x]

数字递增表达式

StartNumber表示开始时的数值,EndNumber表示结束时的数值,StartTime表示开始的时间,EndTime表示结束的时间
StartNumber=1;
EndNumber=20;
StartTime=0;
EndTime=3;
t=linear(time,StartTime,EndTime,StartNumber,EndNumber);Math.floor(t)
|