“表达式”是在ae中通过代码的方式实现动画的方法,能实现事半功倍的效果。
但对不会代码、初学ae的同学来说,哪怕是网上的教程复制代码粘贴过来也时常会报错,且找不到原因!以下为亲测可用、简单、常用的表达式代码,粘贴即用。
包含数字递增、随机变化,动画形变、抖动动画。
不同的动画表达式输入在不同的地方。比如文本动画通过源文本层上的秒表来激活,比如位移动画通过位置图层上的秒表来激活,比如形变动画通过缩放图层上的秒表来激活。
在数据可视化的动效中,经常会遇到数字递增的动效,可通过表达式快速实现。
StartNumber=1;
EndNumber=100;
StartTime=0;
EndTime=6;
t=linear(time,StartTime,EndTime,StartNumber,EndNumber);Math.floor(t)
EndNumber=12345678;
EndTime=10;
Math.floor(t).toLocaleString()
StartNumber=1;EndNumber=12345678;StartTime=0;EndTime=10;t=linear(time,StartTime,EndTime,StartNumber,EndNumber);newIntl.NumberFormat('en-US',{minimumFractionDigits:3,maximumFractionDigits:3}).format(t)
random(20)
//最大值不超过20,包括小数
random(90,900)
//在90<数值<900之间随机改变,包括小数
Math.round(random(10,100))
//在10<数值<100之间随机改变整数
在动画制作中最直接的循环方式是复制关键帧,但比较麻烦且关键帧太多时易出错。通过给位置添加表达式后,即可循环动画。
numkeyframes=0
//数字是循环的次数,0为无限循环,1是最后两个关键帧无限循环,2是最后三个关键帧无限循环,
loopOut(type="cycle",numkeyframes=0)
loopOut(type="pingpong",numkeyframes=0)
在动画变形制作中最直接的方式是添加关键帧变形或者位移,可通过给形态、位置添加表达式,实现随机动画。
spd=10;maxDev=6;decay=1;t=time-inPoint;
offset=maxDev*Math.sin(t*spd)/Math.exp(t*decay);
scaleX=scale[0]+offset;
scaleY=scale[0]-offset;
[scaleX,scaleY]
//只更改第一行参数,spd代表挤压拉伸的速度,maxDev代表挤压拉伸的大小,decay代表衰减
wiggle(100,10)
//wiggle(freq,amp)freq=频率(设置每秒抖动的频率);amp=振幅(每次抖动的幅度)
PS:如果粘贴代码后报错,建议切换到英文输入法手动将符号类文本重新输入一遍,还是报错的话大概率是mac系统、中文版本等原因。欢迎大家补充更多简单易用的表达式呀~