07.AE表达式中的对小数点位数的控制
说明:AE一般指Adobe After Effects。
先解决上一节的问题
上一节我们简单讲了一下表达式中对象的使用,在文章最后也留下了一个小问题,我们现在先把问题解决一下。
具体是什么问题呢?我们看一下上节的代码:
thisComp.layer("红色背景").transform.opacity
我们上节设置的都是50、80这样的数,细心的朋友会发现,当我们设置到某些数字时,比如为56、58这种,会出现这样一种情况:
我们发现当设置为这两种数字时,后面出现了很长的小数[晕]
具体为什么会出现这种情况,我也没有搞太懂[泪奔],如果有大神知道,评论区里帮帮小弟,感激不尽[谢谢]
不过,我们先来看看如何解决这个问题吧!!
遇到这种小数问题,我们最先想到的就是四舍五入、取整这一类的方法,JavaScript 为我们提供了一个 toFixed() 方法,toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。
具体使用方法如下:
NumberObject.toFixed(num)
里面的 num 用于规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。
那么接下来,我们将 toFixed() 方法加到我们的表达式后面试试,因为我们只想显示一个整数,所以我们添加 toFixed(0):
先说下,下面这句代码是错误的
thisComp.layer("红色背景").transform.opacity.toFixed(0)
当我们把 toFixed(0) 添加到原来表达式的末尾时,AE报了一个错,他说 toFixed is not a function,这是什么意思呢?难道AE里面不支持 toFixed() 方法吗?并不是的!我们再来看一下 toFixed() 方法的调用方式:
NumberObject.toFixed(num)
前面是 NumberObject, 然后是 .toFixed(num),也就是说 .toFixed(num) 前面必须是一个数值类型,那我们先前的表达式是什么类型,我们看下:
thisComp.layer("红色背景").transform.opacity
我们只写到了这里,大家还记的原来我们画的图吗?
我们说左侧红框里面叫对象,右侧红框里面才是具体的值,所以我们这句表达式写到这里,只是定位到了对象,为什么大部分情况下又能获取到值呢?这是AE表达式在一些情况下的简写。
这里搞清楚了,我们接下来获取它的数值是不是就行了,我们可以直接加上 value,像这样:
thisComp.layer("红色背景").transform.opacity.value
可以看到,正常获取到值,是没有问题的,接下来,我们再给它加上 toFixed() 方法:
thisComp.layer("红色背景").transform.opacity.value.toFixed(0)
大家看下,现在是不是就没有问题了呢?
这里大家知道可能会存在这个问题就行了!
其他处理小数点位数的方法
toFixed()方法,可以帮助我们四舍五入去的需要的小数位数的数字,这里我们顺便再提一下其他几种对小数取整的方法,需要用到 Math 类,大家先做一个了解。
Math.round(value) :用于四舍五入取整
Math.round(1.3) = 1
Math.round(1.8) = 2
Math.ceil(value) :用于向上取整
Math.ceil(1.3) = 2
Math.ceil(1.8) = 2
Math.floor(value) : 用于向下取整
Math.floor(1.3) = 1
Math.floor(1.8) = 1
以上便是本节全部内容,如果你对AE表达式感兴趣,请关注后续文章!
请先 后发表评论~