Adobe ExtendScript Toolkit (ESTK)
Adobe ExtendScript Toolkit (ESTK)
Section titled “Adobe ExtendScript Toolkit (ESTK)”Adobe ExtendScript Toolkit (ESTK) 是 Adobe 官方的集成开发环境,用于为包括 After Effects 在内的 Creative Suite 应用程序创建和调试 ExtendScript 代码。
ExtendScript Toolkit 提供了一个全面的开发环境,具有:
- 代码编辑器: 为 ExtendScript 提供语法高亮和自动补全
- 调试器: 使用断点和变量检查进行单步调试
- 对象模型查看器: 浏览每个应用程序可用的对象和方法
- 控制台: 用于测试代码片段的交互式 JavaScript 控制台
- 文档: 内置的 ExtendScript 和应用程序 API 参考
- 下载 ESTK: 可作为 Creative Suite 的一部分或独立下载
- 安装: 遵循标准的 Adobe 安装程序流程
- 启动: 在您的应用程序或程序文件夹中找到 ExtendScript Toolkit
目标应用程序设置
Section titled “目标应用程序设置”- 启动 ExtendScript Toolkit
- 从下拉菜单中选择目标应用程序(选择“After Effects”)
- 确保 After Effects 正在运行以进行实时调试
// 设置您偏好的工作区布局:// - 左侧为代码编辑器// - 右侧为对象模型查看器// - 底部为控制台// - 用于断点的调试器面板1. 代码编辑器
Section titled “1. 代码编辑器”- 语法高亮: 自动为 JavaScript 语法着色
- 行号: 便于导航和错误参考
- 自动补全: IntelliSense 风格的代码补全
- 括号匹配: 自动匹配括号和圆括号
2. 对象模型查看器
Section titled “2. 对象模型查看器”- 应用程序对象: 浏览 After Effects 对象层次结构
- 属性和方法: 查看可用的属性和方法
- 文档: 每个对象和方法的内置帮助
3. 控制台面板
Section titled “3. 控制台面板”- 交互式测试: 立即测试代码片段
- 错误输出: 查看运行时错误和调试信息
- 结果显示: 查看函数调用的返回值
4. 调试器
Section titled “4. 调试器”- 断点: 通过单击行号设置断点
- 单步控制: 单步进入、跳过和跳出函数
- 变量检查器: 在调试期间查看变量值
- 调用堆栈: 查看当前的执行堆栈
创建您的第一个脚本
Section titled “创建您的第一个脚本”- 新建文档: 文件 > 新建 > JavaScript 文件
- 设置目标: 从目标下拉菜单中选择“After Effects”
- 编写代码: 从一个简单的脚本开始:
// 简单的“Hello World”脚本,用于 After Effects(function() { // 检查 After Effects 是否可用 if (typeof app === 'undefined') { alert('After Effects 不可用'); return; }
// 显示当前项目的信息 var project = app.project; var message = '项目: ' + project.file.name + '\n'; message += '项目数: ' + project.numItems + '\n'; message += '活动项目: ' + (project.activeItem ? project.activeItem.name : '无');
alert(message);})();- 保存脚本: 文件 > 另存为 > 选择位置和名称
- 运行脚本: 按 F5 或单击运行按钮
基本调试工作流程
Section titled “基本调试工作流程”- 在您希望暂停执行的行号上单击
- 出现一个红点,表示断点
- 运行脚本 - 执行将在断点处暂停
function debugExample() { var comp = app.project.activeItem; var layerCount = comp ? comp.numLayers : 0;
// 在此处设置断点以检查变量 debugger; // 这将触发调试器
for (var i = 1; i <= layerCount; i++) { var layer = comp.layer(i); // 在此处检查图层属性 $.writeln('图层 ' + i + ': ' + layer.name); }}// 在控制台中测试表达式:app.project.activeItem.nameapp.project.activeItem.numLayersapp.project.activeItem.layer(1).transform.position.value对象模型浏览器
Section titled “对象模型浏览器”对象模型查看器对于发现可用的属性和方法非常宝贵:
- 导航层次结构: 展开对象以查看其属性
- 查看文档: 单击项目以查看描述
- 复制到编辑器: 双击以将代码插入脚本
示例:探索图层属性
Section titled “示例:探索图层属性”// 使用对象模型查看器发现:app.project.activeItem.layer(1).transform.positionapp.project.activeItem.layer(1).transform.scaleapp.project.activeItem.layer(1).transform.rotationapp.project.activeItem.layer(1).property('Effects')实时查看和修改对象属性:
- 选择对象: 在脚本中选择一个对象
- 查看属性: 查看当前的属性值
- 修改值: 更改属性并立即看到结果
测量脚本性能:
// 启用分析$.hiresTimer
function profiledFunction() { var startTime = $.hiresTimer;
// 您的代码在此处 for (var i = 0; i < 1000; i++) { // 某些操作 }
var endTime = $.hiresTimer; $.writeln('执行时间: ' + (endTime - startTime) + ' 微秒');}// 使用立即调用函数表达式 (IIFE)(function() { 'use strict';
// 您的脚本代码在此处 function main() { // 主要逻辑 }
// 辅助函数 function helperFunction() { // 辅助逻辑 }
// 执行 main();})();function robustFunction() { try { // 风险操作 var comp = app.project.activeItem; if (!comp) { throw new Error('没有活动的合成'); }
// 继续操作 return comp.layers.addSolid([1, 0, 0], '红色固态层', 100, 100, 1);
} catch (error) { // 优雅地处理错误 $.writeln('robustFunction 中的错误: ' + error.toString()); alert('发生错误: ' + error.message); return null; }}// 使用 $.writeln 进行控制台输出$.writeln('调试: 变量值为 ' + myVariable);
// 使用 debugger 语句触发断点if (someCondition) { debugger; // 执行将在此处暂停}
// 使用 try-catch 进行错误调查try { riskyOperation();} catch (e) { $.writeln('错误详情: ' + e.toString()); $.writeln('错误行号: ' + e.line);}常见工作流程
Section titled “常见工作流程”脚本开发周期
Section titled “脚本开发周期”- 计划: 概述您的脚本应完成的任务
- 研究: 使用对象模型查看器查找必要的对象/方法
- 原型: 在控制台中编写和测试小代码片段
- 开发: 构建具有正确错误处理的完整脚本
- 调试: 使用断点和变量检查修复问题
- 测试: 使用不同的 After Effects 项目和场景运行
- 部署: 安装在 After Effects 脚本文件夹中
// 创建测试场景function testScript() { // 测试没有活动合成的情况 if (!app.project.activeItem) { $.writeln('测试 1: 没有活动合成 - 通过'); }
// 测试空合成的情况 var testComp = app.project.items.addComp('测试', 1920, 1080, 1, 10, 30); app.project.activeItem = testComp;
if (testComp.numLayers === 0) { $.writeln('测试 2: 空合成 - 通过'); }
// 清理 testComp.remove();}脚本无法运行
Section titled “脚本无法运行”- 检查目标: 确保选择了正确的应用程序
- 检查语法: 在编辑器中查找语法错误
- 检查权限: 确保 After Effects 允许脚本执行
- 启用调试: 首选项 > 常规 > 启用 JavaScript 调试器
- 检查连接: 确保 After Effects 正在运行并已连接
- 重启应用程序: 有时需要重启 ESTK 和 AE
- 使用分析: 识别慢速代码段
- 优化循环: 避免重复访问对象
- 使用撤销组: 将操作分组以获得更好的性能
// 常见的错误模式和解决方案:
// "对象不支持此属性或方法"// 解决方案: 检查对象类型和可用的方法if (layer instanceof AVLayer) { // 可以安全使用 AVLayer 的方法}
// "参数号 1 无效"// 解决方案: 在函数调用前验证参数if (typeof value === 'number' && value > 0) { layer.transform.scale.setValue([value, value]);}替代方案和现代工作流程
Section titled “替代方案和现代工作流程”VS Code 与 ExtendScript 扩展
Section titled “VS Code 与 ExtendScript 扩展”虽然 ESTK 是官方工具,但许多开发者更喜欢现代编辑器:
- 更好的性能: 更快、更灵敏
- 现代功能: 更好的 IntelliSense、Git 集成、扩展
- 自定义: 主题、键绑定和工作流程自定义
请参阅我们的 VS Code 设置指南 了解现代开发工作流程。
- 开发: 使用 VS Code 编写和编辑
- 调试: 使用 ESTK 进行复杂调试
- 测试: 使用两种环境进行全面测试
🔗 相关资源
Section titled “🔗 相关资源”- VS Code 设置 - 现代开发环境
- 脚本开发指南 - ExtendScript 编程
- 脚本示例 - 社区分享的脚本
- Adobe ExtendScript 文档 - 官方参考
- 安装和配置: 设置 ESTK 与 After Effects
- 练习基础: 创建简单的脚本并使用调试功能
- 探索对象模型: 熟悉 After Effects 对象
- 构建项目: 从小的自动化任务开始
- 加入社区: 与其他 ExtendScript 开发者联系
ExtendScript Toolkit 仍然是 After Effects 脚本开发的重要工具,尤其是在调试复杂脚本和探索应用程序的对象模型方面。虽然新工具有现代化的便利性,但 ESTK 与 Adobe 应用程序的深度集成使其对于严肃的 ExtendScript 开发不可或缺。