07.AE表达式中的对小数点位数的控制

说明:AE一般指Adobe After Effects。

先解决上一节的问题

06.AE表达式中的对象Object的使用

上一节我们简单讲了一下表达式中对象的使用,在文章最后也留下了一个小问题,我们现在先把问题解决一下。

具体是什么问题呢?我们看一下上节的代码:

thisComp.layer("红色背景").transform.opacity


我们上节设置的都是50、80这样的数,细心的朋友会发现,当我们设置到某些数字时,比如为56、58这种,会出现这样一种情况:


不透明度设置为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表达式感兴趣,请关注后续文章!

举报
评论 0