|
|
// 合成设置批处理器
// 批量修改选中的多个合成
(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();
})();
|
|