这次我们依然来解决关于数字递增的表达式问题
</> After Effects expressions
a. 比如我们需要0-5秒,数字从0-150的递增变化
如下图所示:
表达式:
Math.floor(linear(time, 0, 5, 0, 150))
表达式解析:
linear(time, 0, 5, 0, 150)意思是,随着时间0秒到4秒,做1-10的变化
Math.foor( ) 对数值取整,返回数值的整数
然后你会发现,到5秒结束时,数字显示 148 ?
其实这是时长的问题,帧速率:25帧/秒,5秒01帧才是表达式的结束点。
修改合成时长即可解决问题
这里我就不修改时长了,用修改表达式来完成5秒结束时显示数字150:
如下图所示:
表达式:
Math.floor(linear(time, 0, 4.9, 0, 150))
</> After Effects expressions
b.如果我们希望数字从000开始显示,变成:000——>150
让个位0 => 000,十位10 => 010
先看效果
如下图所示:
表达式:
a = Math.floor(linear(time, 0, 4.9, 0, 150));
b = a.toString().length;
if(b == 1) {
a = '00' + a;
} else if(b == 2) {
a = '0' + a;
} else if(b == 3) {
a;}
表达式解析:
将数字变化Math.floor(linear(time, 0, 4.9, 0, 150))定义变量为a
toString()方法:将number整数类型转为string字符串类型
length函数: 返回字符串的长度,比如0返回1,10返回2,100返回3
a.toString().length( a的字符串长度 )定义变量为b
if..else语法
if (条件表达式)
{
当条件为 true 时执行的代码
}
else
{
当条件不为 true 时执行的代码
}
添加if...else条件判断语句
- 当 b == 1 时——> a = '00' + a
显示个位数时,比如0-9,显示为000-009
- 当 b == 2 时——> a = '0' + a
显示十位数时,比如10-99,显示为010-099
- 当 b == 3 时——> a
显示百位数时,比如100-150,a不做变化
</> After Effects expressions
c.换一种思路,修改表达式
其实我们也可以使用switch,因为if判断条件都是 == 相等运算符,一直在匹配1、2、3,没有用到其他条件
switch语法
switch(expression) {
case n:
代码块
break;
case n:
代码块
break;
default:
默认代码块
}
所以
表达式可以修改为:
a = Math.floor(linear(time, 0, 4.9, 0, 150));
b = a.toString().length;
switch(b){
case 1:
a = '00' + a;
break;
case 2:
a = '0' + a;
break;
case 3:
a;
break;
}
效果一模一样
</> After Effects Expiession
d.最后,还有一种表达式+打关键帧的办法来解决000-150的递增效果
采用两层的方法实现
其实很简单,两层的原理:
红色是打关键帧的层,白色是写表达式的层
表达式层显示0-9时,关键帧层是00
表达式层显示10-99时,关键帧层是0
表达式层,0-4.9秒0-150的递增变化
Math.floor(linear(time, 0, 4.9, 0, 150))
复制表达式层,去掉表达式,输入000,动画里加上不透明度,调成0%
范围选择器调整:
单位 => 索引
模式 => 相减
平滑度 => 0%
第一个关键帧,在数字进行到 9 时打帧,数值为2
第二个关键帧,在数字进行到 10 时打帧,数值为1
第三个关键帧,在数字进行到 99 时打帧,数值为1
第四个关键帧,在数字进行到 100 时打帧,数值为0
</> After Effects expressions
好了,以上就是本篇的全部内容了,希望对各位观众老爷有所帮助,如果有疑问,可以在评论区发表你的想法!