使用拾取线可以方便的建立参数间的连接表达式:
例如,为图层的不透明度添加表达式,然后拖动拾取线到图层旋转参数上就会为不透明度与旋转参数建立动态连接,现在再为旋转参数设置关键帧,会同步影响到不透明度属性:
如果你将拾取线拖动到同一合成不同图层的属性参数上,那么AE就会创建一个稍微复杂一点的表达式,表明与哪一个图层的属性建立动态连接:
this_comp.layer("Solid 1").opacity
这个表达式首先指明合成("this_comp"),然后指明该合成中的图层("solid1"),最后指明该图层被用于建立连接的属性(opacity)。
顺便说一句,拾取线没有什么特别神奇的地方,可以说它仅仅起到自动将连接的属性名称及其所属合成与图层添加到表达式文本区。你也可以亲自手写表达式,但是这种方式远远不及拾取线方便准确,特别是当需要编写较复杂的表达式时,拾取线的高效快捷更是体现的淋漓尽致。
向量、阵列、维数、索引
有时候你会发现通过拾取线创建的表达式看上去好象在重复参数,例如,如果你将位置参数的拾取线拖动到旋转参数上,你就会得到如下表式:
[rotation, rotation];
因为位置属性有两个参数(X、Y坐标)而旋转属性只有一个参数,建立连接关系后,表达式自动将旋转参数应用两次分别位置属性的X、Y坐标参数。
由两个或三个数值来描述属性的参数组叫做向量或阵列,AE中很多的属性参数是向量式的,包括位置、轴心点和缩放等属性;
与阵列对应的用单个数值来描述属性的参数叫做标量式参数。
向量与阵列:究竟向量和阵列之间有什么区别呢,你也许会注意到AE的帮助文件有时候互用这两个单词,简单的说向量是既有大小又有方向的数字阵列,其运算结果即要考虑到大小又要考虑到方向;阵列是一套独立元素的组合,阵列中可以包含任何元素,可以是物体阵列,词汇阵列或者是混合阵列:
ralph=[10, this_layer, "bob"];
也许没有人会知道上面的这种阵列会有什么用处,但是它确实是一个正确的阵列,当然在AE中我们大部分时间内遇到的是数字阵列(也叫向量)。所以,在接下来的描述中,当谈论到通用的概念和操作应用时,我们使用阵列来描述;当涉及到特殊的数字阵列时我们用向量来描述。
索引:
对于阵列来说,你可以使用阵列名加上包含数字的中括号从阵列中提取需要的单一元素,例如:position[0];
这种表达方法叫做索引,注意在阵列中使用索引调用元素时,必须从0开始计数第一个元素。所以,上面的表达式就返回位置属性向量中的第一个参数——x坐标,那么position[1]就返回位置属性中的Y坐标,千万不要搞混淆了,在AE中虽然所有的调整都是从1开始的,但是当使用索引时,必须从零开始计数。
建立阵列:
如果要建立阵列,可以将数值以逗号分隔开放入中括号中:
my_vector=[10,20,30];//该表达式的意思是将一个三维数组赋予变量my_vector,该数组中包含三个元素分别是10,20,30,
维数 :
阵列中的元素个数代表阵列的维数,例如上面的my_vector是一个三维数组,位置属性是一个二维数组或三维数组(转变为三维图层)。标量式的属性如旋转和不透明度属于一维数组(准确说单一数字或者是标量数值就是一维向量)。
需要注意的是诸如位置、属性这样的多维数组或者是自定义的数组变量,不需要将他们的名字写在方括号中,AE会将其识别为数组。当要索引阵列或者是描述阵列时,需要使用方括号。
修改阵列中的一个元素:
可以用如下的方式来书写位置表达式:
[position[0], position[1]];
将位置阵列中的两个参数分别提出来后,再将他们放入同一个阵列中,看上去与仅仅书写positon的结果相同,优点是你可以使用这种结构来修改阵列中的一个元素而不影响另外元素,例如:top_of_layer=0;
[anchor_point[0], top_of_layer];
在这个表达式中,阵列中的第一个元素是轴心点的X坐标值,第二个元素是0,如果将该值赋予轴心点属性,那么轴心点的X值将受AE的控制调整,而轴心点的Y值将始终为0。
当使用这种结构时要特别注意,如果将图层设置为3d图层,就需要重新书写表达式,将位置与轴心点Z轴考虑进去。例如,如果仍然使用上面轴心点的例子,但是这次将轴心点所在的图层设置为3D图层,AE会自动将丢失的Z轴坐标设置为0,这当然比出现程序错误要强的多,但是所得到的结果未必是我们需要的,因为表达式将忽略轴心点的Z轴坐标的变化。
再看另外一个例子,假如你将一个图层的位置属性复制到另外一个图层上,并且将该参数的Y轴值减去100:
ralph=this_comp.layer(1)
[ralph.position[0], ralph.position[1]-100];
如果这时将图层设置为3D图层,你会发现对控制图层的Z轴所做的任何操作丝毫不会影响到受控图层的Z轴,因为表达式中没有表明Z轴的坐标值,AE会自动将其设置为0。
联系客服