freq =6;// 频率(每秒钟弹的次数)
decay =4;// 衰减(数值越小,弹的效果持续的越长;反之。一般设置为 3 或 4)
n =0;if(numKeys >0){// numKeys (关键帧的数量) 是否大于0
n =nearestKey(time).index;if(key(n).time > time){
n--;}}if(n >0){// 当有关键帧时,让属性产生弹性效果
t = time -key(n).time;
amp =velocityAtTime(key(n).time -.001);// 设置弹性的幅度
w = freq*Math.PI*2;
value + amp*(Math.sin(t*w)/Math.exp(decay*t)/w);}else{// 否则就给它一个默认值,不产生弹性效果
value
}
AE 小球回弹表达式
e =0.7;//弹力
g =1000;//重力
nMax =9;//最大弹跳次数
n =0;if(numKeys >0){
n =nearestKey(time).index;if(key(n).time > time) n--;}if(n >0){
t = time -key(n).time;
v =-velocityAtTime(key(n).time -.001)*e;
vl =length(v);if(value instanceofArray){
vu =(vl >0)?normalize(v):[0,0,0];}}else{
vu =(v <0)?-1:1;}
tCur =0;
segDur =2*vl/g;
tNext = segDur;
nb =1;// number of bounceswhile(tNext < t && nb <= nMax){
vl *= e;
segDur *= e;
tCur = tNext;
tNext += segDur;
nb++}if(nb <= nMax){
delta = t - tCur;
value + vu*delta*(vl - g*delta/2);}else{
value
}
AE 挤压拉伸表达式
spd =20;
maxDev =10;
decay =1;
t = time - inPoint;
offset = maxDev*Math.sin(t*spd)/Math.exp(t*decay);
scaleX = scale[0]+ offset;
scaleY = scale[1]- offset;[scaleX, scaleY]