|
|
// 关键帧批量偏移器
// 批量移动选中图层的关键帧时间
(function(){
var win = new Window("dialog", "关键帧偏移");
win.orientation = "column";
var timeGroup = win.add("group");
timeGroup.add("statictext", undefined, "偏移秒数:");
var offsetInput = timeGroup.add("edittext", undefined, "1.0");
offsetInput.characters = 10;
var directionGroup = win.add("group");
var forwardBtn = directionGroup.add("button", undefined, "向后偏移");
var backwardBtn = directionGroup.add("button", undefined, "向前偏移");
function offsetKeyframes(offset) {
var comp = app.project.activeItem;
if(!comp || !(comp instanceof CompItem)) {
alert("请先激活一个合成");
return;
}
var selectedLayers = comp.selectedLayers;
if(selectedLayers.length === 0) {
alert("请至少选择一个图层");
return;
}
app.beginUndoGroup("关键帧偏移");
for(var i=0; i<selectedLayers.length; i++) {
var layer = selectedLayers[i];
var properties = layer.selectedProperties;
if(properties.length === 0) {
// 如果没有选中的属性,则处理该图层所有属性
properties = [layer.transform.position,
layer.transform.scale,
layer.transform.rotation,
layer.transform.opacity];
}
for(var j=0; j<properties.length; j++) {
var prop = properties[j];
if(prop && prop.numKeys > 0) {
for(var k=1; k<=prop.numKeys; k++) {
var time = prop.keyTime(k);
var value = prop.keyValue(k);
prop.setValueAtTime(time + offset, value);
prop.removeKey(k);
}
}
}
}
app.endUndoGroup();
}
forwardBtn.onClick = function() {
var offset = parseFloat(offsetInput.text);
if(isNaN(offset)) offset = 1.0;
offsetKeyframes(offset);
win.close();
};
backwardBtn.onClick = function() {
var offset = parseFloat(offsetInput.text);
if(isNaN(offset)) offset = 1.0;
offsetKeyframes(-offset);
win.close();
};
win.show();
})();
|
|