后效成分在时间轴上的开始时间

时间:2014-06-09 07:21:33

标签: javascript adobe extendscript after-effects jsx

在Adobe After Effects(AE)中我正在编写一个简短解释动画的脚本。 AE中的脚本语言看起来很像Javascript,只有脚本语言的文档级别非常低(甚至在网上)。

我在AE中添加了两种成分,每种成分含有多种成分。问题是在运行脚本后,两个场景都从AE时间轴的开头开始。我想开始' scene2'在' scene1'之后完了。但我无法弄清楚如何做到这一点。我开始使用' displayStartTime',但不幸的是在运行脚本后,两个场景在时间轴中再次从0开始,因此相互重叠。

有人知道如何解决这个问题吗?

(两个场景的持续时间为5秒)

var scene1 = addComposition("SCENE1", 1920, 1080, 1, 5, 30, compositionType.scene, compMain); 
scene1.collapseTransformation = true;
scene1.displayStartTime = 1; //start this scene from the beginning, and  therefore overrule main.
var bg1 = scene1.layers.addSolid(hexToRgb(backgroundColor.white) , "BACKGROUND ONE", 1920, 1080, 1); 
var art1 = scene1.layers.add(getArtworkItem(artworkList, "funk-elogo")); //add artwork to this scene, start at 1, setplop starts at 1
art1.startTime = 1;
setPlop(art1, 1, 1);

var scene2 = addComposition("SCENE2", 1920, 1080, 1, 5, 30, compositionType.scene, compMain);
scene2.collapseTransformation = true;
scene2.displayStartTime = 6; //start this scene after scene 1
var bg2 = scene2.layers.addSolid(hexToRgb(backgroundColor.white) , "BACKGROUND TWO", 1920, 1080, 1); 
var art2 = scene2.layers.add(getArtworkItem(artworkList, "office")); //add artwork to this scene, start at 1, setplop starts at 1
art2.startTime = 1;
setPlop(art2, 1, 1);

1 个答案:

答案 0 :(得分:1)

您必须使用图层的startTime和outPoint。这是一个简单的例子。该脚本需要一个有两层的活动comp。

function fun(){
app.beginUndoGroup("XXX");
var curComp = app.project.activeItem;
   if (!curComp || !(curComp instanceof CompItem)){
        alert("no active comp");
        return;
    };
if(curComp.numLayers < 2){
    alert("Not enough layers");
    return;
    }
var compone = curComp.layer(1);
var comptwo = curComp.layer(2);
comptwo.startTime = compone.outPoint;
app.endUndoGroup();
}

fun();

有关更多信息,请查看After Efffects CS6 Scripting guide