执笔论坛

 找回密码
 立即注册
搜索
查看: 9|回复: 0

[AE脚本]合成设置批处理器 - 批量修改多个合成的分辨率...

[复制链接]

72

主题

73

帖子

519

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
519
发表于 昨天 16:29 | 显示全部楼层 |阅读模式
// 合成设置批处理器

// 批量修改选中的多个合成

(function(){
    var win = new Window("dialog", "合成设置批处理");
    win.orientation = "column";
   
    // 分辨率
    var resGroup = win.add("group");
    resGroup.add("statictext", undefined, "分辨率:");
    var widthInput = resGroup.add("edittext", undefined, "1920");
    widthInput.characters = 6;
    resGroup.add("statictext", undefined, "x");
    var heightInput = resGroup.add("edittext", undefined, "1080");
    heightInput.characters = 6;
    var resCheck = resGroup.add("checkbox", undefined, "修改");
   
    // 帧率
    var fpsGroup = win.add("group");
    fpsGroup.add("statictext", undefined, "帧率:");
    var fpsInput = fpsGroup.add("edittext", undefined, "25");
    fpsInput.characters = 6;
    var fpsCheck = fpsGroup.add("checkbox", undefined, "修改");
   
    // 时长
    var durGroup = win.add("group");
    durGroup.add("statictext", undefined, "时长(秒):");
    var durInput = durGroup.add("edittext", undefined, "10");
    durInput.characters = 6;
    var durCheck = durGroup.add("checkbox", undefined, "修改");
   
    // 背景色
    var bgGroup = win.add("group");
    bgGroup.add("statictext", undefined, "背景色:");
    var colorInput = bgGroup.add("edittext", undefined, "#000000");
    colorInput.characters = 8;
    var colorCheck = bgGroup.add("checkbox", undefined, "修改");
   
    // 选择合成的范围
    var scopeGroup = win.add("group");
    scopeGroup.add("statictext", undefined, "应用范围:");
    var scope = scopeGroup.add("dropdownlist", undefined, [
        "项目面板中选中的合成",
        "所有合成",
        "当前激活的合成"
    ]);
    scope.selection = 0;
   
    var btnGroup = win.add("group");
    btnGroup.alignment = "center";
    var applyBtn = btnGroup.add("button", undefined, "应用");
    var cancelBtn = btnGroup.add("button", undefined, "取消");
   
    applyBtn.onClick = function() {
        var comps = [];
        
        // 获取目标合成列表
        if(scope.selection.index === 0) {
            // 选中的合成
            var items = app.project.selection;
            for(var i=0; i<items.length; i++) {
                if(items[i] instanceof CompItem) {
                    comps.push(items[i]);
                }
            }
        } else if(scope.selection.index === 1) {
            // 所有合成
            for(var i=1; i<=app.project.numItems; i++) {
                if(app.project.item(i) instanceof CompItem) {
                    comps.push(app.project.item(i));
                }
            }
        } else {
            // 当前激活的
            if(app.project.activeItem instanceof CompItem) {
                comps.push(app.project.activeItem);
            }
        }
        
        if(comps.length === 0) {
            alert("没有找到符合条件的合成");
            return;
        }
        
        app.beginUndoGroup("批量修改合成设置");
        
        for(var i=0; i<comps.length; i++) {
            var comp = comps[i];
            
            if(resCheck.value) {
                var w = parseInt(widthInput.text);
                var h = parseInt(heightInput.text);
                if(!isNaN(w) && !isNaN(h) && w>0 && h>0) {
                    comp.width = w;
                    comp.height = h;
                }
            }
            
            if(fpsCheck.value) {
                var fps = parseFloat(fpsInput.text);
                if(!isNaN(fps) && fps>0) {
                    comp.frameRate = fps;
                }
            }
            
            if(durCheck.value) {
                var dur = parseFloat(durInput.text);
                if(!isNaN(dur) && dur>0) {
                    comp.duration = dur;
                }
            }
            
            if(colorCheck.value) {
                var colorStr = colorInput.text;
                // 简单处理,只支持6位十六进制
                if(colorStr.match(/^#[0-9A-Fa-f]{6}$/)) {
                    var r = parseInt(colorStr.substr(1,2), 16)/255;
                    var g = parseInt(colorStr.substr(3,2), 16)/255;
                    var b = parseInt(colorStr.substr(5,2), 16)/255;
                    comp.bgColor = [r, g, b];
                }
            }
        }
        
        app.endUndoGroup();
        alert("已修改 " + comps.length + " 个合成");
        win.close();
    };
   
    cancelBtn.onClick = function() {
        win.close();
    };
   
    win.show();
})();
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|执笔论坛

GMT+8, 2026-3-17 06:30 , Processed in 0.139330 second(s), 18 queries .

Powered by 执笔论坛

Copyright © 2022-2026

快速回复 返回顶部 返回列表