说明:AE一般指Adobe After Effects。
到目前为止,我们已经可以创建一个具有值、数学运算符、对象和注释的表达式,接下来讲一下编写表达式的最后一个重要元素 -- 关键字。
通过前面的讲解,我们知道一个表达式由1个或者多个语句组成,语句可以调用或生成一个值。
接下来,我们讲一下如何使用关键字来操作这些语句,关键字需要放在语句前面,关键字的使用也需要遵守一些规则,这个我们在讲具体关键字时也会提到。
我们首先要讲到的是 var 关键字。
通过前面几节的只是,我们了解到,在编写表达式前,需要先定义一个变量,先定义变量名,然后给它进行赋值,想这样:
x = 10;
下面我们介绍另一种创建变量的方法,使用关键字 var,像这样:
var x = 10;
格式为:
// var 变量名 = 变量值
var nameVariable = value;
为什么要使用关键字 var 呢?
AE表达式使用的是JavaScript语言,一个没有使用 var 关键字定义的变量被称为全局变量,而使用 var 关键字定义的变量,可以是一个全局变量,但在某些情况下也可以成为一个局部变量。所谓局部变量,也称内部变量,是指在一个函数内部定义的变量,它的作用范围只在这个函数内部,而不会在所有的表达式语句中都生效。如果还不是很明白,也不用太纠结,我们后面会经常用到这个关键字,慢慢就会熟悉起来。
可以看到,在上一节的例子中,我们使用 var 关键字定义变量并使用后,得到的结果是一样的。
if / else 用于条件判断,我们用一个例子来解释。
首先,我们在一个新的合成中,放置一个 红色纯色图层,一个 文本图层。
现在,我希望文本层显示其实际旋转值,为此,我将在源文本属性的表达式编辑器中编写:
thisLayer.rotation.value;
或者,简写:
rotation;
这将显示文本层的旋转特性的值。
现在我想将文本层的旋转特性链接到红色实体层的旋转属性,以便红色实体层控制文本层的旋转。为此,我们需要在文本层的旋转属性的表达式编辑器中编写:
thisComp.layer("红色 纯色 1").rotation;
我们可以看到,当旋转红色实体层时,文本层是链接的,因此它具有相同的旋转值。现在,如果我们希望文本层在旋转0到90度之间时不透明度为100%,那么在旋转到90度或超过90度时更改为50%要怎么做呢?
为此,我们必须在文本层的不透明度属性中编写一个表达式,但首先我希望我的文本层也显示它自己的不透明度值。让我们将其写入文本层的“源文本”属性:
r = rotation.value; // 当前图层的旋转属性值
o = opacity.value; // 当前图层的不透明度属性值
"旋转: " + r + "r" + "不透明度: " + o;
我们创建了两个变量 r 和 o ,分别定义文本层的旋转值和不透明度值。然后,我们使用加法运算符(此处也是连接符)将字符串值与变量相连接。其中字符串值“r”生成一个文本操作,表示换行,因此我们在屏幕上看到了 旋转 和 不透明度 两行结果。
现在,文本层可以显示不透明度值,我们可以可视化正在发生的事情。让我们在文本层的不透明度属性的表达式编辑器中编写以下内容:
var x = rotation;
if (x < 90)
{
100
}
else
{
50
}
我们看一下结果:
当红色实体层旋转属性值在0到100之间时:
当红色实体层旋转属性值达到90或者超过90时:
我们可以看到很明显的变化,文本图层显示的透明度值做出了改变,以上便是条件判断语句 if / else 的用法。
上面我们通过一个示例了解了 if / else 的用法,那么 if / else 条件判断语句是如何工作的呢?
我们再来看一下上述的代码:
var x = rotation;
if (x < 90)
{
100
}
else
{
50
}
简单的说,if 后面要紧跟一个 括号(),括号里面放置的是 用来进行判断的语句,如果该判断语句判断结果为真(true),代表条件成立,则执行if后面紧跟着的第一个花括号{}中的代码,否则,则执行 else 后面紧跟着的花括号{}中的代码。
大家可以自己进行一下尝试。
以上便是本节全部内容,如果你对AE表达式感兴趣,请关注后续文章!