-
【脚本归纳】常见变量与函数归纳
有时候,在逻辑上要先判断所属关系,再进行下一步,因此整一个判断汇总 常规 // 变量篇 var comp = app.project.activeItem; // 当前激活的合成 var items = app.project.selection; // 项目面板的选择项目集合 var selLayers = app.project.activeItem.selectedLayers; // 当前合成的图层选择列表 var layerSelProps = layer.selectedProperties; // 当前图层/合成的属性选择列表。合成要用合成.selectedProperties var propSelKeys = prop.selectedKeys; // // 数量 arr.length; // 普通列表 arr[i] project.numItems; // 项目面板的项目集 project.item(i) comp.numLayers; // 合成里的图层集 comp.layer(i) propGroup.numProperties; // 属性组里的属性集 propGroup.property(i) // 撤销组 app.beginUndoGroup("My Undo Group 01"); app.endUndoGroup(); 判断 普通判断 // 常见判断对象 xx instanceof ↓ PropertyGroup 属性组 CompItem 合成 ShapeLayer 形状图层 Folder 文件夹 p.propertyType = PropertyType.PROPERTY // 判断是不是一个普通属性 判断图层类型 //判断图层类型 var theLayer = 你的图层 // 自己定义下 if (theLayer instanceof AVLayer) { if (theLayer.source instanceof CompItem) { alert("合成"); } else if (theLayer.source instanceof FootageItem) { if (theLayer.nullLayer) { alert("空对象"); } else if (theLayer.source.mainSource instanceof SolidSource) { if (theLayer.adjustmentLayer == true) { alert("调整图层"); } else if (theLayer.frameBlendingType) { alert("纯色图层"); } else { alert("空对象"); } } else { alert("素材"); } } } else { alert("不是 AV"); } // 或者使用构造器 layer.constructor.name === "ShapeLayer"; 遍历 遍历选择的图层 var comp = app.project.activeItem; // 活动合成 var slLayers = comp.selectedLayers; // 选择图层集 var layerNumber = comp.selectedLayers.length; // 选择图层个数 if(layerNumber >= 1){ for(var i = 0,l = layerNumber; i < l; i++){ // 对选择图层逐个操作 slLayers[i].XXX } } 遍历合成里的图层(不检测子合成) var comp = app.project.activeItem; // 活动合成 for (var ii…- 0
- 0
- 706
-
Github 简单脚本(可以自己练习)
1.第一组 来源:https://github.com/kyletmartinez/After-Effects-Scripts 将标记添加到选定图层 使用可选注释向所有选定图层添加新制造商 将选定的属性添加到基本图形面板 使用效果名称而不是表达式控件的属性名称将所有选定的属性添加到基本图形面板 计算关键帧值之间的差异 计算两个关键帧值之间的差异 计算二维图层之间的距离 计算两个二维图层之间的距离 中心组成 在合成面板中居中合成。按住 ALT 键或 SHIFT 键进行其他缩放级别 清理渲染队列 清理渲染队列 清理选定的文件夹 清除任何选定文件夹中未使用的项目。删除空文件夹,除非它们是顶级的 复印合成工作区 从活动合成复制工作区。按住 ALT 键将复制的工作区粘贴到活动合成中。 循环合成背景颜色 在黑色、灰色和白色之间循环合成背景颜色 强制合成面板刷新 强制合成面板刷新当前帧 硬单层 在所有未选择的图层上禁用(切换眼球图标) 反转选定的关键帧 反转选定的关键帧值 锁定所有图层 锁定项目中每个构图中的每一层 保持关键帧 将选定的关键帧转换为保持关键帧 随机化层开始时间 在提供的范围内随机移动所有选定图层的开始时间 随机化选定的关键帧值 随机化选定的一维关键帧的值 将合成重命名为文件名 将当前合成重命名为与项目相同的名称 将第一层重命名为合成名称 重命名每个选定合成中的第一层以匹配合成名称 重命名图层源 重命名当前选定层的源 重命名所选图层 重命名所选图层并附加零填充数字 将源重命名为图层名称 重命名所选图层的源以匹配 重置合成工作区 设置工作区以覆盖整个构图 移动选定的图层 将所有选定图层作为一个组移动到当前时间指示器,同时保持相对时间 设置新颜色 根据原始颜色、混合模式和不透明度设置新颜色 将效果粘贴到图层 使用选定的位置属性(例如 CC Bend It 或 Gradient Ramp)强制效果正确粘贴到图层 Toggle 保持比例表达式 禁用或启用保持图层在 Z 空间中定位时的视觉比例的表达式 切换洋葱皮 在当前合成中切换洋葱皮 零位 将所有选定图层的位置归零 第二组 观看:快速概览 将调色板从 Ray Dynamic Color 复制到剪贴板 (转到 Ray-Comp 并运行脚本:copy-colors.jsx) 非常适合 KBar https://aescripts.com/kbar/ 在 C4D 中粘贴为色板或彩色平面 (在 Cinema 4D 中运行脚本:paste-colors.py) Adobe After Effects 的精彩“aequery”脚本库的使用:http ://aequery.aenhancers.com/ 拉伸和序列层.jsx 通过“输入”拉伸选定的图层并创建一个序列。 非常适合 KBar https://aescripts.com/kbar/ cc-shapelayer.jsx 创建一个快速调整层。(作为形状层) #NoSolids 始终插入所选图层的顶部 设置一些表达式以始终适合您的合成大小。 非常适合 KBar https://aescripts.com/kbar/ null-shapelayer.jsx 创建一个快速的空层。(作为形状层) #NoSolids 始终插入所选图层的顶部 引导层 + 不透明度为零。 非常适合 KBar https://aescripts.com/kbar/ 冻结帧调整长度.jsx 对于每个选定的图层: 图层 > 时间 > 冻结帧 适合图层的输入和输出以进行合成 非常适合 KBar https://aescripts.com/kbar/ add-selected-precomps-to-renderqueue.jsx 将活动 Comp 的选定 PreComp 添加到 RenderQueue 非常适合 KBar https://aescripts.com/kbar/ 复制项目到 watchfolder.jsx 保存项目并将副本发送到您的 AME-Watch-Folder。 非常适合 KBar https://aescripts.com/kbar/- 0
- 0
- 496
-
【脚本文档】文件IO文档
参考内容:JavaScript Tool Guide 文件篇 文件与文件夹对象 使用文件和文件夹对象 Windows、Mac OS 和 UNIX 上的路径名语法不同, Adobe ExendScript 定义File和Folder对象,用于不同平台底层文件系统的访问。File 对象代表磁盘文件,Folder 对象代表目录或文件夹。 Folder对象,支持文件系统,例如遍历层次结构;创建、重命名或删除文件;或解析文件别名。 File对象,支持输入/输出函数来读取或写入文件。 判断 File 和 Folder 对象。例如: if ( f instanceof File ) // f是否属于文件 if ( typeof f.open == "undefined" ) ... // f文件夹未打开 [sc name="note" ]创建两个相同路径的 File 对象时,会被视为不同对象。打开其中一个用于 I/O,会禁止另一个对象的访问,因为磁盘文件已经打开。[/sc] 指定路径 创建文件或文件夹对象时,可以指定特定平台的路径名,或者以独立于平台的格式(通用资源标识符表示法,以下统称URI)指定绝对或相对路径。存储在对象中的路径始终是指向磁盘上固定位置的绝对完整路径名。 toString 方法:获取文件或文件夹的名称,包含 URI 的绝对路径名。 fsName属性:获取特定于平台的文件名。 绝对路径和相对路径 URI 中的绝对路径,从根目录到文件或文件夹的完整路径。以一或两个斜线 ( /)开头,斜线用于分隔路径。例如,myFile.jsx文件的绝对位置: /dir1/dir2/mydir/myFile.jsx URI 中的相对路径名附加到当前目录的路径,如存储在Folder 类的全局可用属性current。它以文件夹或文件名开头,或者以当前目录. 或当前父目录..的开头。斜线 ( /) 分隔路径元素。例如,myFile.jsx各种相对位置表示方法: myFile.jsx 在当前目录中。 ./myFile.jsx ../myFile.jsx 在当前目录的父目录中。 ../../myFile.jsx 在当前目录的祖父目录中。 ../dir1/myFile.jsx 在与当前目录平行的 dir1 中。 相对路径独立于不同机器和操作系统上的不同卷名,因此代码更具可移植性。例如可以对一个使用绝对路径,使用Folder.current 设置当前目录,其他的使用相对路径。只需更改一个代码即可更新到新平台或文件位置。 路径中的字符解释 不同平台解释方式存在差异: Windows 和 Mac OS 路径名不区分大小写。UNIX 则区分大小写。 Windows ,斜杠 ( /) 和反斜杠 ( \) 均有效。反斜杠\是转义字符,因此必须使用双反斜杠 ( \\) 来表示。 Mac OS 上,斜杠 ( /) 和冒号 ( :) 均为有效的路径元素分隔符。 如果路径名以两个斜杠(或 Windows 上的反斜杠)开头,则第一个元素指的是远程服务器。例如,//myhost/mydir/myfile指的/mydir/myfile是服务器myhost 上的路径。 URI 允许在路径名中使用特殊字符,但必须使用转义字符 (%) 后跟十六进制字符代码来指定它们。特殊字符是非字母数字且不是以下字符的字符: 、/ - - . ! ~ * ' ( ) 例如,空格被编码为%20,因此my file → my%20file。 此编码方案与全局 JavaScript 函数encodeURI和decodeURI兼容. 主目录 路径名可以以波浪号 ( ~)开头,代表用户主目录。对应于平台的 HOME环境变量。 UNIX 和 Mac OS 根据用户登录分配 HOME 环境变量。 Mac OS 默认主目录是/Users/username. UNIX 中,通常为/home/username或/users/username. ExtendScript 直接从平台值分配主目录值。 Windows,HOME环境变量是可选的。如果已分配,则其值必须是 Windows 路径名或引用远程服务器的路径名(例如\\myhost\mydir)。如果HOME未定义环境变量,则 ExtendScript 默认为用户的主目录,通常是文件夹。C:\Documents and Settings\username [sc name="note" ]脚本可以通过静态的、全局可用的 Folder 类属性,访问特定于平台的变量指定的文件夹;例如,appData文件夹包含用户应用程序数据。[/sc] 卷和驱动器名称 卷或驱动器名称可以是 URI 中绝对路径的第一部分。根据平台解释这些值。 Mac OS 卷 Mac OS X 启动时,启动卷是文件系统的根目录。所有其他卷,包括远程卷,都是 /Volumes 目录的一部分。File 和 Folder 对象使用这些规则来解释路径名的第一个元素: 如果名称是启动卷的名称,则丢弃。 如果名称是卷名,则在前面加/Volumes。 否则,保持路径不变。 不支持 Mac OS 9 作为操作系统,但仍然支持使用冒号作为路径分隔符,并且对应于 URI 和 Mac OS X 路径,如下表所示。这些示例假设启动卷是MacOSX,并且有一个已安装的卷Remote。 URI 路径名 Mac OS 9 路径名 Mac OS X 路径名…- 0
- 0
- 242
-
【脚本文章】变量引用与变量赋值
JS中的引用 在JS中,如果赋值之后,修改原数据,赋值后的变量也会更改,被称为引用传递 var arr = ["a","b","c"] var arr2 = arr arr.pop(2) // 移除数组的最后一个元素 console.log(arr2) // 返回["a", "b"],因此arr2也变了 不更改,称为赋值传递 var arr = "abc" var arr2 = arr arr="bcd" console.log(arr2) // "abc" 不随原元数据更改 通过引用传递其他(数组或对象) 通过值传递原始类型(数字、字符串、布尔值、空值、undefined) 优点 对象类可以共用一个地址,节省空间。有点像AE的复制合成 脚本中的引用 但是在AE脚本中,数组类型的值,是按值传递的,不存在引用传递 var Pos = app.project.activeItem.selectedLayers[0].position.value; // 定义一个位置数组值 使用其他引用该值,并不会“引用”赋值,而是复制了一份出去。 为什么这样? 它可能与脚本的“setValue 方法”有关。在AE脚本中,直接给value赋值并不会改变这个值,必须使用setValue方法。这样 value 的值不会因轻微错误而改变。 参考文章 浅拷贝与深拷贝 【AE脚本】值是引用传递还是值传递?- 0
- 0
- 176