After Effects

  1. 主页
  2. 文档
  3. After Effects
  4. 表达式和自动化
  5. 正在编辑表达式

正在编辑表达式

在属性中添加或移除表达式

您可以设置关键帧的任何属性都可以使用表达式。

要添加和显示表达式,请在“时间线”面板中选择该属性并执行以下操作之一:

  • 选择动画 > 添加表达式。要移除,请选择动画 > 移除表达式。
  • 按住 Alt 键并单击 (Windows) 或按住 Option 键并单击 (macOS) 时间线面板或效果控制面板中属性名称旁边的秒表按钮。要移除表达式,请重复此步骤。

表达式激活后,属性下会出现四个图标,并且值会变为红色。

关联一组属性

关联器是在 After Effects 中进行关联的拖放选择工具。单击并按住表达式旁边的螺旋图标以进入选择模式。拖动到另一个属性时,关联器会链接到您的光标。释放鼠标将指向下面的属性,并自动生成表达式语法。

正在编辑表达式-PR模板网

要完全理解表达式的工作原理,您需要了解代码如何影响属性值。

要跨图层和合成关联一组属性,请使用属性链接:

  1. 选择任何一个属性或一组属性并选择编辑 > 使用属性链接复制或编辑 > 使用相对属性链接复制。
  2. 然后将这些属性粘贴到合成中的任何图层上。此时,粘贴后的属性将会连接到属性复制来源的图层。对原始属性所作的所有更改,都将反映在粘贴的属性链接实例中。(或)

    在对原图层作出更改后,可复制带属性链接的整个图层并进行粘贴,以生成副本。

使用带相对属性链接复制命令复制图层的“位置”属性结果如下:

thisComp.layer(“control_layer”).transform.position

使用带相对属性链接复制命令复制图层的“位置”属性结果如下:

comp(“source_comp”).layer(“control_layer”).transform.position

禁用表达式

要暂时禁用表达式,请单击启用表达式开关。表达式处于禁用状态时,此开关中会显示一条斜杠。

正在编辑表达式-PR模板网

编辑表达式

使用关联器编辑表达式

如果您不确定是否使用 JavaScript 或 After Effects 表达式,请继续并开始使用关联器。使用此工具可更轻松地关联表达式属性。

正在编辑表达式-PR模板网

  1. 请确保您的属性应用了某种表达式。例如,按住 Alt 键并单击 (Win) 或 Opt 键并单击 (Mac) 缩放属性左侧的秒表图标来应用表达式。
  2. 转到时间线面板并在文本字段内单击以激活表达式编辑器。将光标放在要编辑表达式的位置。
  3. 在插入点的表达式字段中输入表达式。
    • 如果选中表达式字段中的文本,新表达式文本将替换所选文本。
    • 如果插入点不在表达式字段中,新表达式文本将替换该字段中的所有文本。

可以将关联器拖动到属性的名称或值。如果拖动到属性的名称,则生成的表达式会将所有值作为一个整体显示。例如,如果您将关联器拖动到位置属性的名称,则会显示如下表达式:

thisComp.layer(“Layer 1”).transform.position

如果将关联器拖动到“位置”属性的某个组件值(例如 y 值),则会显示如下表达式。属性的 x 和 y 坐标均已链接到“位置”属性的 y 值:

temp = thisComp.layer(“Layer 1”).transform.position[1]; [temp, temp]注意:

如果您使用关联器创建表达式以引用图层,且该图层与同一合成中的另一图层名称相同,则目标图层的名称会更改。新的图层名称是结尾有一数字的旧的图层名称。此更改是确保表达式清楚引用合成中的单个图层所必需的。

关联器创建的表达式格式

关联器创建的表达式格式由表达式关联器写入简明英语首选项决定。

  • 编辑 > 首选项 > 常规 (Windows)
  • 首选项 > 脚本和表达式 (macOS)

关联器会创建表达式,这些表达式使用在“时间轴”面板中显示的属性名称。由于这些名称是内置的,因此可以在 After Effects 以另一种语言运行时使用。可编辑的属性名称使用双引号括起,并在不同语言中保持一致。如果项目不以其他语言共享,请取消选择该选项。

以下是使用简明英语的一个示例:

thisComp.layer(“Layer 1”).transform.position

以下是未使用简明英语的同一表达式:

thisComp.layer(“Layer 1”)(“Transform”)(“Position”)注意:

因为默认情况是使用简明英语,所以本文档在多数示例和插图中使用简明英语。

手动编辑表达式

正在编辑表达式-PR模板网

要手动编辑表达式,请执行以下操作:

  1. 单击表达式字段进入文本编辑模式。在您进入文本编辑模式后,会选中整个表达式。要添加到表达式,请在表达式中单击以放置插入点;否则,您将替换整个表达式。
  2. 在表达式字段中键入和编辑文本,可以选择使用“表达式语言”菜单。要查看多行表达式的更多部分,请拖动表达式字段的底部或顶部以调整其大小。
  3. 要退出文本编辑模式并激活表达式,请执行下列操作之一:
    • 按数字小键盘上的 Enter 键。
    • 在表达式字段外部单击。

显示表达式和表达式图表

在时间轴中显示表达式

  • 显示有错误的表达式:

您可以选择仅显示包含表达式错误的属性,这有助于您快速查看和更正错误。使用以下步骤来实现这一点:

  1. 选择要查看其错误的图层,然后右键单击打开弹出菜单。
  2. 选择显示 > 显示表达错误。

正在编辑表达式-PR模板网

正在编辑表达式-PR模板网

  • 仅显示表达式的属性:

要仅显示表达式的属性,请选择一个或多个图层,然后按 EE。

正在编辑表达式-PR模板网

  • 时间轴搜索

可使用“时间轴”面板中的搜索字段来搜索表达式以及属性的其他组件。如果搜索字符串显示在表达式中,则属性及其包含的属性组和图层将显示在搜索结果集中。

注意:

要调整表达式字段的大小,请向上或向下拖动其顶部边缘。

图表编辑器中的表达式

图表编辑器模式中,单个表达式字段在图表编辑器底部显示为可调整大小的框。仅显示所选属性的表达式。要同时显示多个表达式字段,“时间轴”面板必须采用图层条模式。

正在编辑表达式-PR模板网

要在图层条模式和图表编辑器模式之间切换,请按 Shift+F3 键。此外,还可使用时间轴面板顶部的图表编辑器按钮实现此操作。

正在编辑表达式-PR模板网

要在图表编辑器中显示表达式字段,请从图表编辑器底部的“选择图表类型和选项”  正在编辑表达式-PR模板网  菜单中选择“显示表达式编辑器”。在向属性添加表达式后,将显示表达式编辑器。

正在编辑表达式-PR模板网

要了解表达式如何更改值或速度图表,请在图表编辑器中显示值或速度图表时,单击“显示后表达式图表”按钮  正在编辑表达式-PR模板网

阅读图表编辑器

暗淡的彩色图表显示应用表达式之前的值或速度。而明亮的彩色图表显示应用表达式之后的值或速度。打开“位置”属性的图表叠加会更改“合成”面板中显示的运动路径,以便您能够查看受表达式影响的路径。

正在编辑表达式-PR模板网

向表达式添加注释

如果您编写一个复杂的表达式,则应添加注释来解释该表达式的作用及其工作原理。

使用以下语法之一来注释您的代码:

  • 在注释开头键入 //。将忽略 // 和行尾之间的任何文本。例如: //这是一条注释。
  • 在注释开头键入 /* 并在注释结尾键入 */。将忽略 /* 和 */ 之间的任何文本。例如:/*这是一条多行注释。*/

保存和重复使用表达式

编写表达式后,您可以将其复制并粘贴到文本编辑应用程序中进行保存,以备后用。您还可将其保存在动画预设或模板项目中。然而,因为表达式的编写涉及项目中的其他图层且可能会使用特定图层名称,所以有时必须修改表达式才能在项目之间传递表达式。

您可以使用正常的 JavaScript 函数语法在表达式中定义自己的函数。在此示例中,定义了一个计算两个值的平均值的函数,且最后一行使用以下函数:

function average(a, b) { return (a + b) / 2; } average(position, thisComp.layer(1).position);注意:

您必须在其中使用每个函数的每个表达式中确切定义该函数。没有可以添加到的函数的全局库。

如果要保存表达式以便在其他项目中使用,请考虑向表达式添加注释。您还应使用变量以便能够在一个位置更改值而无需在多个位置更改值。

例如,此表达式开头有一个说明表达式用途的多行注释并且在声明并初始化变量后有一个说明变量用途的简短注释:

/* This expression on a Source Text property reports the name of a layer and the value of its Opacity property. */ var myLayerIndex = 1; // layer to inspect, initialized to 1, for top layer thisComp.layer(myLayerIndex).name + “: \rOpacity = ” + thisComp.layer(myLayerIndex).opacity.value

您可以保存包括表达式的动画预设并在其他项目中重用动画预设,前提是表达式不引用其他项目中不存在的属性。当您保存其中的属性具有表达式但没有关键帧的预设时,只会保存表达式。如果该属性具有一个或多个关键帧,则保存的预设包含表达式以及所有关键帧值。

将表达式另存为预设

您可以使用以下步骤将表达式另存为预设并在其他项目中使用:

  1. 在时间轴中,选择应用表达式的属性,例如,将表达式应用于图层的旋转属性,因此选中该属性。然后,选择动画 > 保存动画预设。
  2. 重命名预设,比如说“Time40”,然后保存。默认情况下,会将其作为 Adobe After Effects 预设文件保存在“用户预设”文件夹中。
  3. 要应用您的预设,请旋转打开效果和控制菜单下的动画预设。此处有两个文件夹(预设和用户预设),旋转打开用户预设。该文件夹包含您在 After Effects 中创建的所有预设。将“Time40”预设拖到正在处理的图层上,即可应用表达式!

从图层属性复制表达式

您可以从图层属性复制表达式,可以包含也可以不包含该属性的关键帧。

  • 要将表达式和关键帧从一个属性复制到其他属性,请在“时间轴”面板中选择源图层属性,复制该图层属性,选择目标图层属性,然后粘贴。
  • 要将表达式从一个属性复制到其他属性且不复制关键帧,请选择源属性,选择“编辑”>“仅复制表达式”,选择目标属性,然后粘贴。

提示:当您要同时复制多个表达式并将其粘贴到一个或多个新图层上时,或者要复制一个表达式并将其粘贴到多个图层上时,复制不含关键帧的表达式非常有用。

注意:

正如粘贴关键帧和其他项一样,您通常可以将其粘贴到目标图层,并且依赖 After Effects 确定哪个属性应该是粘贴操作的目标。例如,这适用于将“位置”属性从一个图层复制到另一个图层。但是,如果要将表达式从“位置”属性粘贴到“缩放”属性中,则必须选择目标属性。

上次更新日期: 2023年5月25日

原文链接:https://helpx.adobe.com/cn/after-effects/using/edit-expressions.html