AE 缩放弹性表达式、小球回弹表达式和挤压弹性拉伸表达式

AE 缩放弹性表达式

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 instanceof Array){
		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 bounces
while (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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值