定义全局变量的关键字(15.AE表达式中常用的关键字)

说明:AE一般指Adobe After Effects。

到目前为止,我们已经可以创建一个具有值、数学运算符、对象和注释的表达式,接下来讲一下编写表达式的最后一个重要元素 -- 关键字。

通过前面的讲解,我们知道一个表达式由1个或者多个语句组成,语句可以调用或生成一个值。

接下来,我们讲一下如何使用关键字来操作这些语句,关键字需要放在语句前面,关键字的使用也需要遵守一些规则,这个我们在讲具体关键字时也会提到。


var 关键字

我们首先要讲到的是 var 关键字。

通过前面几节的只是,我们了解到,在编写表达式前,需要先定义一个变量,先定义变量名,然后给它进行赋值,想这样:

x = 10;

下面我们介绍另一种创建变量的方法,使用关键字 var,像这样:

var x = 10;

格式为:

// var 变量名 = 变量值 var nameVariable = value;

为什么要使用关键字 var 呢?

AE表达式使用的是JavaScript语言,一个没有使用 var 关键字定义的变量被称为全局变量,而使用 var 关键字定义的变量,可以是一个全局变量,但在某些情况下也可以成为一个局部变量。所谓局部变量,也称内部变量,是指在一个函数内部定义的变量,它的作用范围只在这个函数内部,而不会在所有的表达式语句中都生效。如果还不是很明白,也不用太纠结,我们后面会经常用到这个关键字,慢慢就会熟悉起来。


可以看到,在上一节的例子中,我们使用 var 关键字定义变量并使用后,得到的结果是一样的。


if / else 关键字

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 的用法,那么 if / else 条件判断语句是如何工作的呢?

我们再来看一下上述的代码:

var x = rotation; if (x < 90) { 100 } else { 50 }

简单的说,if 后面要紧跟一个 括号(),括号里面放置的是 用来进行判断的语句,如果该判断语句判断结果为真(true),代表条件成立,则执行if后面紧跟着的第一个花括号{}中的代码,否则,则执行 else 后面紧跟着的花括号{}中的代码。

大家可以自己进行一下尝试。


以上便是本节全部内容,如果你对AE表达式感兴趣,请关注后续文章!

您可以还会对下面的文章感兴趣

使用微信扫描二维码后

点击右上角发送给好友