跳转到内容

项目

app.project

项目对象代表一个After Effects项目。其属性可访问项目中的特定对象(如导入的文件/素材和合成),以及项目设置(如时间码基准)。方法可用于导入素材、创建固态层、合成和文件夹,以及保存更改。


app.project.activeItem

当前被选中待操作的项目项,若未选中或选中多项则返回null

Item对象null;只读。


app.project.bitsPerChannel

当前项目的色彩深度,取值为8、16或32位。

整数(仅限8/16/32);可读写。


Project.compensateForSceneReferredProfiles

Section titled “Project.compensateForSceneReferredProfiles”

app.project.compensateForSceneReferredProfiles

若需为此项目启用”补偿场景参考配置文件”则设为true,否则为false

布尔值;可读写。


app.project.dirty

此方法/属性未正式记录文档,系研究所得。此处信息可能不准确,且该功能可能随时失效。如有更多信息请补充!

若项目自上次保存后有修改则返回true,否则为false

“脏”项目会在窗口标题显示*标记。

布尔值;只读。


app.project.displayStartFrame

设置项目设置对话框中帧计数菜单的替代方式(0或1),等效于对framesCountType使用FramesCountType.FC_START_0FramesCountType.FC_START_1枚举值。

整数(0或1);可读写。


app.project.expressionEngine

项目设置对话框中的表达式引擎设置,返回字符串。可选值:

  • extendscript
  • javascript-1.0

字符串;可读写。


app.project.feetFramesFilmType

项目设置对话框中”使用英尺+帧”菜单设置。建议用此属性替代旧的timecodeFilmType属性。

FeetFramesFilmType枚举值;可读写。可选:

  • FeetFramesFilmType.MM16
  • FeetFramesFilmType.MM35

app.project.file

当前打开项目文件的Extendscript File对象。

File对象,若项目未保存则为null;只读。


app.project.footageTimecodeDisplayStartType

项目设置对话框中的”素材起始时间”设置(当时间显示样式选择为时间码时启用)。

FootageTimecodeDisplayStartType枚举值;可读写。可选:

  • FootageTimecodeDisplayStartType.FTCS_START_0
  • FootageTimecodeDisplayStartType.FTCS_USE_SOURCE_MEDIA

app.project.framesCountType

项目设置对话框中的帧计数菜单设置。

FramesCountType枚举值;可读写。可选:

  • FramesCountType.FC_START_1
  • FramesCountType.FC_START_0
  • FramesCountType.FC_TIMECODE_CONVERSION

将此属性设为FramesCountType.FC_TIMECODE_CONVERSION会将displayStartFrame重置为0。


app.project.framesUseFeetFrames

项目设置对话框中的”使用英尺+帧”设置。

使用英尺+帧时为true,使用帧时为false

布尔值;可读写。


app.project.gpuAccelType

获取或设置当前项目的GPU加速选项。参见app.availableGPUAccelTypes

GpuAccelType枚举值;可读写。可选:

  • GpuAccelType.CUDA
  • GpuAccelType.Metal
  • GpuAccelType.OPENCL
  • GpuAccelType.SOFTWARE
// 通过脚本访问项目设置 -> 视频渲染和效果 -> 使用
var currentGPUSettings = app.project.gpuAccelType; // 获取当前值
var type_str = "";
// 检查当前值并提示用户
switch (currentGPUSettings) {
case GpuAccelType.CUDA:
type_str = "CUDA";
break;
case GpuAccelType.METAL:
type_str = "Metal";
break;
case GpuAccelType.OPENCL:
type_str = "OpenCL";
break;
case GpuAccelType.SOFTWARE:
type_str = "Software";
break;
default:
type_str = "UNKNOWN";
}
alert("当前设置为 " + type_str);
// 将值设为Metal
app.project.gpuAccelType = GpuAccelType.METAL;

app.project.items

项目中的所有项。

ItemCollection对象;只读。


app.project.linearBlending

若需为此项目启用线性混合则设为true,否则为false

布尔值;可读写。


app.project.linearizeWorkingSpace

若需为此项目启用”线性化工作空间”则设为true,否则为false

布尔值;可读写。


app.project.numItems

项目中包含的总项数(包括文件夹和所有类型的素材)。

整数;只读。

var numItems = app.project.numItems;
alert("当前项目包含 " + numItems + " 个项目项")

app.project.renderQueue

项目的渲染队列

RenderQueue对象;只读。


app.project.revision

项目当前修订版本号。每次用户操作都会增加该值。新建项目从1开始。

整数(项目当前修订版本);只读。


app.project.rootFolder

包含项目内容的根文件夹(这是一个虚拟文件夹,包含项目面板中的所有项,但不包括其他文件夹内的项)。

FolderItem对象;只读。


app.project.selection

项目面板中所有选中的项(按项目面板中的排序顺序)。

Item对象数组;只读。


app.project.timeDisplayType

时间显示样式,对应项目设置对话框中的”时间显示样式”部分。

TimeDisplayType枚举值;可读写。可选:

  • TimeDisplayType.FRAMES
  • TimeDisplayType.TIMECODE

app.project.toolType

获取和设置工具面板中的活动工具。

ToolType枚举值;可读写。可选:

  • ToolType.Tool_Arrow: 选择工具
  • ToolType.Tool_Rotate: 旋转工具
  • ToolType.Tool_CameraMaya: 统一摄像机工具
  • ToolType.Tool_CameraOrbit: 轨道摄像机工具
  • ToolType.Tool_CameraTrackXY: XY轴跟踪摄像机工具
  • ToolType.Tool_CameraTrackZ: Z轴跟踪摄像机工具
  • ToolType.Tool_Paintbrush: 画笔工具
  • ToolType.Tool_CloneStamp: 克隆图章工具
  • ToolType.Tool_Eraser: 橡皮擦工具
  • ToolType.Tool_Hand: 抓手工具
  • ToolType.Tool_Magnify: 缩放工具
  • ToolType.Tool_PanBehind: 锚点工具
  • ToolType.Tool_Rect: 矩形工具
  • ToolType.Tool_RoundedRect: 圆角矩形工具
  • ToolType.Tool_Oval: 椭圆工具
  • ToolType.Tool_Polygon: 多边形工具
  • ToolType.Tool_Star: 星形工具
  • ToolType.Tool_TextH: 横排文字工具
  • ToolType.Tool_TextV: 直排文字工具
  • ToolType.Tool_Pen: 钢笔工具
  • ToolType.Tool_Feather: 蒙版羽化工具
  • ToolType.Tool_PenPlus: 添加顶点工具
  • ToolType.Tool_PenMinus: 删除顶点工具
  • ToolType.Tool_PenConvert: 转换顶点工具
  • ToolType.Tool_Pin: 木偶钉工具
  • ToolType.Tool_PinStarch: 木偶淀粉工具
  • ToolType.Tool_PinDepth: 木偶重叠工具
  • ToolType.Tool_Quickselect: Roto笔刷工具
  • ToolType.Tool_Hairbrush: 细化边缘工具

以下示例代码检查当前工具,如果不是统一摄像机工具则设置为该工具:

// 检查当前工具并设置为统一摄像机工具(UCT)
// 假设项目中已选中一个合成
var comp = app.project.activeItem;
if (comp instanceof CompItem) {
// 为当前合成添加摄像机(UCT必需)
var cameraLayer = comp.layers.addCamera("测试摄像机", [comp.width / 2, comp.height / 2]);
comp.openInViewer();
// 如果当前选择工具不是摄像机工具之一,则设为UCT
if (( app.project.toolType !== ToolType.Tool_CameraMaya) &&
( app.project.toolType !== ToolType.Tool_CameraOrbit ) &&
( app.project.toolType !== ToolType.Tool_CameraTrackXY) &&
( app.project.toolType !== ToolType.Tool_CameraTrackZ)) {
app.project.toolType = ToolType.Tool_CameraMaya;
}
}

以下示例代码使用新的app.project.toolType属性从选中的素材项或合成创建360度合成(环境图层和摄像机)。此脚本是从等距柱状投影素材构建VR合成的良好起点:

// 从项目面板选中的素材项或合成创建360 VR合成
var item = app.project.activeItem;
if (item !== null && (item.typeName === "Footage" || item.typeName === "Composition")) {
// 用素材创建合成
var comp = app.project.items.addComp(item.name, item.width, item.height, item.pixelAspect, item.duration, item.frameRate);
var layers = comp.layers;
var footageLayer = layers.add(item);
// 应用CC Environment效果并创建摄像机
var effect = footageLayer.Effects.addProperty("CC Environment");
var camera = layers.addCamera("360摄像机", [item.width / 2, item.height / 2]);
comp.openInViewer();
app.project.toolType = ToolType.Tool_CameraMaya;
} else {
alert("请在项目面板中选择单个素材项或合成。");
}

app.project.transparencyGridThumbnails

当为true时,缩略图视图使用透明棋盘格图案。

布尔值;可读写。


app.project.usedFonts

返回一个对象数组,包含当前项目中使用的字体引用及其出现的文本图层和时间信息。

每个对象包含fontFont对象)和usedAt(由layerID图层ID和出现时间layerTimeD组成的对象数组)。使用Project.layerByID()可检索对应图层。

var usedList = app.project.usedFonts;
if (usedList.length) {
var font = usedList[0].font;
var usedAt = usedList[0].usedAt;
var str = "[0]:" + font.postScriptName + "\n";
for (var i = 0; i < usedAt.length; i++) {
var layerID = usedAt[i].layerID;
// Source Text属性的valueAtTime()期望时间是图层时间而非合成时间
// 与其他属性不同。因此我们调整了usedFonts返回的字段名以明确这一点
var layerTimeD = usedAt[i].layerTimeD;
var layer = app.project.layerByID(layerID);
str += " 图层:'" + String(layer.property("Source Text").valueAtTime(layerTimeD, false)) + "'\n";
}
alert(str);
}

对象数组;只读。


app.project.workingGamma

当前项目的工作伽马值(2.2或2.4)。

设置非2.2或2.4的值会导致脚本错误。

2.22.4;可读写。

  • 设置工作伽马为2.4(Rec. 709):app.project.workingGamma = 2.4;
  • 获取当前工作伽马:var currentGamma = app.project.workingGamma;

app.project.workingSpace

表示项目色彩工作空间颜色配置文件的字符串。设为空字符串可将工作空间设为”无”。

使用app.project.listColorProfiles()获取可用的颜色配置文件描述数组。

字符串;可读写。

  • 设置工作空间为Rec.709 Gamma 2.4:app.project.workingSpace = "Rec.709 Gamma 2.4";
  • 设置工作空间为无:app.project.workingSpace = "";
  • 获取当前工作空间:var currentSpace = app.project.workingSpace;

app.project.xmpPacket

项目的XMP元数据,以RDF(基于XML)格式存储。有关XMP的更多信息,参见JavaScript Tools Guide

字符串;可读写。

以下示例代码访问当前项目的XMP元数据,并修改Label项目元数据字段:

var proj = app.project;
// 将XMPlibrary作为ExtendScript ExternalObject加载
if (ExternalObject.AdobeXMPScript === undefined){
ExternalObject.AdobeXMPScript = new ExternalObject('lib:AdobeXMPScript');
}
var mdata = new XMPMeta(app.project.xmpPacket); //获取项目的XMP元数据
// 更新Label项目元数据值
var schemaNS = XMPMeta.getNamespaceURI("xmp");
var propName = "xmp:Label";
try{
mdata.setProperty(schemaNS, propName, "最终版本...真的!");
} catch (e) {
alert(e);
}
app.project.xmpPacket = mdata.serialize();

app.project.autoFixExpressions(oldText, newText)

自动替换项目中损坏表达式中的文本(若新文本能使表达式正确执行)。

参数类型描述
oldText字符串待替换文本
newText字符串新文本

无。


app.project.close(closeOptions)

关闭项目(可选择自动保存、提示保存或不保存更改)。

参数类型描述
closeOptionsCloseOptions枚举关闭时执行的操作。可选:
- CloseOptions.DO_NOT_SAVE_CHANGES: 不保存直接关闭
- CloseOptions.PROMPT_TO_SAVE_CHANGES: 关闭前提示是否保存
- CloseOptions.SAVE_CHANGES: 自动保存后关闭

布尔值。成功返回true。若文件未保存过且用户取消保存提示则返回false


app.project.consolidateFootage()

合并项目中的所有素材。等效于”文件 > 合并所有素材”命令。

无。

整数;被移除的素材项总数。


app.project.importFile(importOptions)

使用指定的导入选项导入 ImportOptions 对象中指定的文件。等同于”文件 > 导入文件”命令。

从文件创建并返回一个新的 FootageItem 对象,并将其添加到项目的 items 数组中。

参数类型描述
importOptionsImportOptions指定要导入的文件及操作选项的对象。

FootageItem 对象

app.project.importFile(new ImportOptions(new File("sample.psd")));

app.project.importFileWithDialog()

显示导入文件对话框。等同于”文件 > 导入 > 文件”命令。

导入过程中创建的Item 对象数组;如果用户取消对话框则返回 null


app.project.importPlaceholder(name, width, height, frameRate, duration)

创建并返回一个新的 PlaceholderItem,并将其添加到项目的 items 数组中。等同于”文件 > 导入 > 占位符”命令。

参数类型描述
nameString占位符名称。
width整数,范围 [4..30000]占位符宽度(像素)。
height整数,范围 [4..30000]占位符高度(像素)。
frameRate浮点数,范围 [1.0..99.0]占位符帧速率。
duration浮点数,范围 [0.0..10800.0]占位符持续时间(秒)。

PlaceholderItem 对象。


app.project.item(index)

获取指定索引位置的项。

参数类型描述
index整数项的索引位置(第一个项的索引为1)。

Item 对象


app.project.itemByID(id)

通过Item ID获取项。

参数类型描述
id整数项的ID。

Item 对象


app.project.layerByID(id)

Project 的实例方法,当给定有效的 ID 值时,返回项目中具有该 ID 的 Layer 对象。

参数类型描述
id整数(非负数)要从项目中检索的图层的 ID。

如果存在具有给定 ID 的Layer 对象,则返回该对象;否则返回 null。无效的 ID 将抛出异常,提示输入参数不是无符号整数。

var firstComp = app.project.item(1);
var firstLayer = firstComp.layer(1);
var layerID = firstLayer.id;
if (app.project.layerByID(layerID) === firstLayer) {
alert("可以通过ID获取图层!");
}

app.project.listColorProfiles()

返回可作为项目颜色工作空间设置的颜色配置文件描述数组。

无。

字符串数组。


app.project.reduceProject(array_of_items)

从项目中移除除指定项之外的所有项。等同于”文件 > 精简项目”命令。

参数类型描述
array_of_itemsItem 对象数组要保留的项。

整数;移除的项总数。

var items = [];
items[items.length] = app.project.item(1);
items[items.length] = app.project.item(3);
app.project.reduceProject(items);

app.project.removeUnusedFootage()

从项目中移除未使用的素材。等同于”文件 > 移除未使用素材”命令。

无。

整数;移除的 FootageItem 对象总数。


app.project.replaceFont(fromFont, toFont, [noFontLocking = false])

此函数将用Font 对象 toFont 替换所有使用Font 对象 fromFont 的地方。

此操作使用与自动替换缺失或替换字体相同的机制和策略,因此即使是在具有混合样式的TextDocuments上也能精确替换,保留 fromFont 应用的字符范围。

此操作不可撤销。

可选参数 noFontLocking 控制当 toFont 没有应用于文本的字形时会发生什么。默认情况下会选择具有必要字形的回退字体,但如果此参数设置为 true,则不会进行回退,可能导致缺少字形。目前无法检测或报告这种情况。

注意:当 fromFont 是替换字体且 toFont 具有相同的字体属性时,不会发生回退,该参数将被忽略并视为 true

var fromFont = app.project.usedFonts[0].font;
var fontList = app.fonts.getFontsByPostScriptName("TimesNewRomanPSMT");
var toFont = fontList[0];
var layerChanged = app.project.replaceFont(fromFont, toFont);
参数类型描述
fromFontFont 对象要替换的字体。
toFontFont 对象替换后的字体。
noFontLocking布尔值可选。默认为 false

布尔值。如果至少更改了一个图层,则返回 true


app.project.save([file])

保存项目。等同于”文件 > 保存”或”文件 > 另存为”命令。如果项目之前从未保存过且未指定文件,则会提示用户选择位置和文件名。

传递File对象可在不提示的情况下将项目保存到新文件。

参数类型描述
fileExtendscript File可选。要保存的文件。

无。


app.project.saveWithDialog()

显示保存对话框。用户可以命名文件并选择位置保存项目,或点击取消退出对话框。

无。

布尔值;如果项目已保存,则返回 true


app.project.setDefaultImportFolder(folder)

设置文件导入对话框中显示的文件夹。此位置将作为覆盖使用,直到调用不带参数的 setDefaultImportFolder() 或退出 After Effects。

参数类型描述
folderExtendscript Folder要设置为默认的文件夹。

布尔值;指示操作是否成功。

以下任一方式都可以将默认导入文件夹设置为 C:/My Folder:

  • var myFolder = new Folder("C:/My Folder"); app.project.setDefaultImportFolder(myFolder);
  • app.project.setDefaultImportFolder(new Folder("C:/My Folder"));
  • app.project.setDefaultImportFolder(Folder("C:/My Folder"));

注意:如果路径指向现有文件而非文件夹,Folder 函数将返回 File 对象而非 Folder 对象,这会导致 setDefaultImportFolder() 返回 false

要将默认导入文件夹设置为当前用户的桌面文件夹:app.project.setDefaultImportFolder(Folder.desktop);

要禁用默认文件夹,调用不带参数的 setDefaultImportFolder()app.project.setDefaultImportFolder();


app.project.showWindow(doShow)

显示或隐藏项目面板。

参数类型描述
doShow布尔值true 时显示项目面板,为 false 时隐藏。

无。


app.project.newTeamProject(teamProjectName, description)

创建新的团队项目。

参数类型描述
teamProjectName字符串团队项目名称。
description字符串可选。项目描述。

布尔值。如果成功创建团队项目,则返回 true,否则返回 false


app.project.openTeamProject(teamProjectName)

打开团队项目。

参数类型描述
teamProjectName字符串团队项目名称。

布尔值。如果成功打开团队项目,则返回 true,否则返回 false


app.project.shareTeamProject(comment)

共享当前打开的团队项目。

参数类型描述
comment字符串可选。注释。

布尔值。如果成功共享团队项目,则返回 true,否则返回 false


app.project.syncTeamProject()

同步当前打开的团队项目。

布尔值。如果成功同步团队项目,则返回 true,否则返回 false


app.project.closeTeamProject()

关闭当前打开的团队项目。

布尔值。如果成功关闭团队项目,则返回 true,否则返回 false


app.project.convertTeamProjectToProject(project_file)

将团队项目转换为本地磁盘上的 After Effects 项目。

参数类型描述
project_fileExtendscript File本地 After Effects 项目文件(扩展名应为 .aep 或 .aet,不支持 .aepx)。

布尔值。如果成功转换团队项目,则返回 true,否则返回 false


app.project.listTeamProjects()

返回包含当前用户可用的所有团队项目名称字符串的数组。不包含已归档的团队项目。

字符串数组。


app.project.isTeamProjectOpen(teamProjectName)

检查指定的团队项目是否当前已打开。

参数类型描述
teamProjectName字符串团队项目名称。

布尔值。如果指定的团队项目当前已打开,则返回 true,否则返回 false


app.project.isAnyTeamProjectOpen()

检查是否有任何团队项目当前已打开。

布尔值。如果有任何团队项目当前已打开,则返回 true,否则返回 false


app.project.isTeamProjectEnabled()

检查 After Effects 是否启用了团队项目。(此函数几乎总是返回 true。)

布尔值。如果当前启用了团队项目,则返回 true,否则返回 false


app.project.isLoggedInToTeamProject()

检查客户端(After Effects)当前是否已登录到团队项目服务器。

布尔值。如果客户端当前已登录到团队项目服务器,则返回 true,否则返回 false


app.project.isSyncCommandEnabled()

检查同步命令是否启用。

布尔值。如果团队项目同步命令启用,则返回 true,否则返回 false


app.project.isShareCommandEnabled()

检查共享命令是否启用。

布尔值。如果团队项目共享命令启用,则返回 true,否则返回 false


app.project.isResolveCommandEnabled()

检查解决命令是否启用。

布尔值。如果团队项目解决命令启用,则返回 true,否则返回 false


app.project.resolveConflict(ResolveType)

使用指定的解决方法解决打开的团队项目与团队项目服务器上的版本之间的冲突。

参数类型描述
ResolveTypeResolveType 枚举要使用的冲突解决方法类型。可以是以下之一:
- ResolveType.ACCEPT_THEIRS: 接受共享版本。共享版本将替换您的版本。
- ResolveType.ACCEPT_YOURS: 保留您的项目版本。不接受共享版本。
- ResolveType.ACCEPT_THEIRS_AND_COPY: 复制并重命名您的版本,然后接受共享版本。共享版本将替换您的原始版本。

布尔值。如果指定类型的解决方法成功,则返回 true,否则返回 false