[AE脚本] 笔记向: 获取所有效果的更改参数

最近在学赤动的教程, 顺手想写写笔记, 但是效果太多了而且截图好麻烦, 于是写个脚本, 用来获取已选图层上, 所有效果中, 参数更改的内容, 并发送到剪切板, 效果如下

____________
Curves
____________
VC Color Vibrance
Brightness: 0.5
Matte Alpha: 2
____________
Glow
Glow Radius: 100
____________
Glow 2
Glow Threshold: 97.5
Glow Radius: 100

更新

2023/7/20: 修复某些属性获取不了的问题, 加了个try顶一下, 暂时没空研究

2023/7/6: 追加表达式更改检测

脚本源码

只需复制内容, 新建一个getAllChangeProperties.jsx 文件,然后记事本打开, 粘贴进去, 再用ae调用即可

// 源码: https://www.yuelili.com/?p=22695
// 介绍: 获取当前选择图层所有效果已更改的属性名和数值

// 字符串发送到剪切板
function copyToClipboard(text) {
    var tempFile = new File(Folder.temp.fullName + "/temp.txt");
    tempFile.open("w");
    tempFile.write(text);
    tempFile.close();

    if (Folder.fs === "Windows") {
        var cmdCommand = 'cmd.exe /c cmd.exe /c "type ' + tempFile.fsName + ' | clip"';
        system.callSystem(cmdCommand);
    } else if (Folder.fs === "Macintosh") {
        var osaCommand = 'cat "' + tempFile.fsName + '" | pbcopy';
        system.callSystem("osascript -e '" + osaCommand + "'");
    } else {
        alert("Unsupported operating system.");
    }

    // 删除临时文件
    tempFile.remove();
}

var activeComp = app.project.activeItem;
if (activeComp instanceof CompItem) {
    var selectedLayer = activeComp.selectedLayers[0];
    if (selectedLayer) {
        var effects = selectedLayer.property("ADBE Effect Parade");
        var result = ""

        // 遍历所有效果
        for (var i = 1; i <= effects.numProperties; i++) {
            var effect = effects.property(i);
            // 检查效果是否被更改
            if (effect.isModified) {
                var effectName = effect.name;

                result += "\n\n---\n\n";
                result += "\n" + effectName;

                var numProperties = effect.numProperties;

                // 遍历属性
                for (var j = 1; j <= numProperties; j++) {
                    var property = effect.property(j);
                    // 检查属性是否被更改
                    try {
                        // 加个异常处理 有些自定义属性貌似获取不到
                        if (property.isModified && property.propertyType === PropertyType.PROPERTY && property.propertyValueType !== PropertyValueType.NO_VALUE) {
                            // 获取属性名称和值

                            var propertyName = property.name;
                            var propertyValue = property.value;
                            result += "\n- " + (propertyName + ": " + propertyValue.toString());

                            // 查看是否有表达式
                            if (property.expressionEnabled) {

                                try {
                                    var propertyName = property.name;
                                    var propertyValue = property.expression;
                                    result += "\n" + (propertyName + ": " + propertyValue);
                                } catch (error) {

                                }
                            }
                        }
                    } catch (err) {

                    }
                }
            }
        }
        // 删除开头的\n
        result = result.slice(1)
        // 发送到剪切板
        copyToClipboard(result);
    }
}

给TA充电
共{{data.count}}人
人已充电
AEAE开发脚本开发

[AE脚本示例] 遍历效果并创建文件夹

2023-6-28 12:49:06

AEAE效果库

[AE效果]赤动 水

2023-7-14 18:06:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索