- 1.AE-Js脚本
- 2.ExtendScript 语言
- 3.图层排序算法
- 4.作者答疑
脚本是告诉应用程序执行一系列操作的一系列命令。您可以在大多数AE中使用脚本来自动执行重复性任务、执行复杂的计算,甚至可以使用一些不直接通过图形用户界面公开的功能。例如,您可以指示AE对合成中的图层重新排序、查找和替换文本图层中的源文本,或者在渲染完成时发送电子邮件消息。尽管AE表达式语言和 After Effects ExtendScript 脚本语言都基于 JavaScript,但 After Effects 的表达式功能和脚本功能是独立且不同的。表达式无法访问脚本中的信息(例如变量和函数)。脚本告诉应用程序做某事,而表达式则表示属性是某事。但是,由于 After Effects 表达式语言和 ExtendScript 均基于 JavaScript,因此熟悉其中一种语言对理解另一种非常有帮助。可编写脚本的应用程序的核心是对象模型。使用 Adobe After Effects 时,您可以创建项目、合成和渲染队列项目以及它们包含的所有元素:素材、图像、实体、图层、蒙版、效果和属性。在脚本术语中,这些项目中的每一个都是一个对象。本指南介绍了为 After Effects 项目定义的 ExtendScript 对象。 After Effects 对象模型由项目、项目、合成、层和渲染队列项目组成。每个对象都有自己的特殊属性,After Effects 项目中的每个对象都有自己的标识(尽管并非所有对象都可以通过脚本访问)。您应该熟悉 After Effects 对象模型才能创建脚本。
2.ExtendScript 语言After Effects 脚本使用 Adobe ExtendScript 语言,它是 JavaScript 的扩展形式,被多个 Adobe 应用程序使用,包括 PS、AI和 ID。 ExtendScript 根据 ECMA-262 规范实现 JavaScript 语言。 After Effects 脚本引擎支持 ECMA-262 标准的第 3 版,包括其符号和词汇约定、类型、对象、表达式和语句。 ExtendScript 还实现了 E4X ECMA-357 规范,该规范定义了对 XML 格式数据的访问。
3.图层排序算法AfterEffect(AE)插件是Adobe公司开发的特效制作软件,稳定快速的功能和特效,在视频制作领域使用非常广泛,本文向大家介绍如何在项目里进行图层排序功能。源代码如下所示:
{
// Sort Layers by In Point.jsx
//
// This script reorders layers in the active comp, sorted by inPoint.
//
function SortLayersByInPoint(thisObj)
{
var proj = app.project;
var scriptName = "Sort Layers by In Point";
function sortByInpoint(comp_layers, unlockedOnly) {
var total_number = comp_layers.length;
while (total_number >= 2) {
var layer_was_moved = false;
for (j = 1; j comp_layers[total_number].inPoint) {
if (comp_layers[j].locked) {
if (unlockedOnly==false) {
comp_layers[j].locked = false;
comp_layers[j].moveAfter(comp_layers[total_number]);
comp_layers[total_number].locked = true;
layer_was_moved = true;
}
} else {
comp_layers[j].moveAfter(comp_layers[total_number]);
layer_was_moved = true;
}
}
}
if (!layer_was_moved) {
total_number = total_number-1 ;
}
}
}
// change this to true if you want to leave locked layers untouched.
var unlockedOnly = false;
if (proj) {
var activeItem = app.project.activeItem;
if (activeItem != null && (activeItem instanceof CompItem)) {
app.beginUndoGroup(scriptName);
var activeCompLayers = activeItem.layers;
sortByInpoint(activeCompLayers, unlockedOnly);
app.endUndoGroup();
} else {
alert("Please select an active comp to use this script", scriptName);
}
} else {
alert("Please open a project first to use this script.", scriptName);
}
}
SortLayersByInPoint(this);
}
4.作者答疑
如有疑问,敬请留言。