如何在After Effects扩展脚本中获取所有已打开的合成?
获取After Effects中时间轴已打开的合成标签页
嘿,我之前也碰到过这个困惑!AE脚本API里其实有个专门的属性能精准解决你的需求——app.project.openItems,它返回的正是所有当前在时间轴以标签页形式打开的项目(包括合成、素材文件等)。
你之前用到的app.project.activeItem确实只能拿到当前激活的那一个合成,而app.project.items是项目里所有内容的集合,不管有没有打开,所以openItems才是你要找的关键入口。
下面是具体的代码示例,帮你筛选出所有已打开的合成:
// 获取所有已打开的项目集合 const openItems = app.project.openItems; // 用来存储筛选后的合成对象 const openComps = []; // 遍历所有已打开项目,筛选出合成类型 for (let i = 1; i <= openItems.length; i++) { const currentItem = openItems[i]; // 判断当前项目是否为合成(CompItem类型) if (currentItem instanceof CompItem) { openComps.push(currentItem); // 可先打印验证结果 $.writeln(`已打开的合成:${currentItem.name}`); } } // 现在openComps里就是所有在时间轴标签页打开的合成了 // 接下来你可以对每个合成执行自定义处理逻辑 openComps.forEach(comp => { // 这里替换成你的业务代码,比如修改合成时长、批量添加图层等 $.writeln(`正在处理合成:${comp.name}`); });
小提醒:
- 一定要用
instanceof CompItem做类型判断,因为openItems里可能包含素材文件夹、视频文件这类非合成的项目,避免后续处理时出现类型错误。 - AE并没有单独区分“在时间轴打开”和“在查看器打开”的属性,这两种状态的项目都会被纳入
openItems,完全覆盖我们说的“标签页打开”的场景。
内容的提问来源于stack exchange,提问作者Oogst
相关产品推荐
相关产品推荐

