3){ alert('選択レイヤーがが3つじゃありません(多い)'); }else if (tempLength < 3){ alert("選択レイヤーがが3つじゃありません(少ない)"); }else{ //全面に移動; app.executeCommand(2016); //それぞれコンポジション化してフレーム固定; activeComp.time=0 app.project.activeItem.layers.precompose([1], activeComp.layer(1).name+"_co", true); app.executeCommand(3695); app.project.activeItem.layers.precompose([2], activeComp.layer(2).name+"_co", true); app.executeCommand(3695); app.project.activeItem.layers.precompose([3], activeComp.layer(3).name, true); app.executeCommand(3695); app.project.activeItem.layers.precompose([3],">  3){ alert('選択レイヤーがが3つじゃありません(多い)'); }else if (tempLength < 3){ alert("選択レイヤーがが3つじゃありません(少ない)"); }else{ //全面に移動; app.executeCommand(2016); //それぞれコンポジション化してフレーム固定; activeComp.time=0 app.project.activeItem.layers.precompose([1], activeComp.layer(1).name+"_co", true); app.executeCommand(3695); app.project.activeItem.layers.precompose([2], activeComp.layer(2).name+"_co", true); app.executeCommand(3695); app.project.activeItem.layers.precompose([3], activeComp.layer(3).name, true); app.executeCommand(3695); app.project.activeItem.layers.precompose([3],">  3){ alert('選択レイヤーがが3つじゃありません(多い)'); }else if (tempLength < 3){ alert("選択レイヤーがが3つじゃありません(少ない)"); }else{ //全面に移動; app.executeCommand(2016); //それぞれコンポジション化してフレーム固定; activeComp.time=0 app.project.activeItem.layers.precompose([1], activeComp.layer(1).name+"_co", true); app.executeCommand(3695); app.project.activeItem.layers.precompose([2], activeComp.layer(2).name+"_co", true); app.executeCommand(3695); app.project.activeItem.layers.precompose([3], activeComp.layer(3).name, true); app.executeCommand(3695); app.project.activeItem.layers.precompose([3],">
//フローティングパレット構成;

(function (me){	var palette = ( me instanceof Panel) ? me : new Window("palette","並べるボタン",[0,0,180,210]);
   

//テキストとボタン;

palette.add("statictext",[10,10,180-10,50-10],"閉じ口を下にして3つを選択");
var b = palette.add("button",[10,40,180-10,80-10],"オート口パク");

//ボタントリガー;

b.onClick = function()
{
    
//イベント置き場;

var activeComp= app.project.activeItem;
var tempLength = activeComp.selectedLayers.length;

 if(tempLength > 3){
     alert('選択レイヤーがが3つじゃありません(多い)'); 
}else if (tempLength < 3){
  alert("選択レイヤーがが3つじゃありません(少ない)");
}else{
     
//全面に移動;

app.executeCommand(2016);

//それぞれコンポジション化してフレーム固定;

activeComp.time=0
app.project.activeItem.layers.precompose([1], activeComp.layer(1).name+"_co", true);
app.executeCommand(3695);
app.project.activeItem.layers.precompose([2], activeComp.layer(2).name+"_co", true);
app.executeCommand(3695);
app.project.activeItem.layers.precompose([3], activeComp.layer(3).name, true);
app.executeCommand(3695);
app.project.activeItem.layers.precompose([3], activeComp.layer(3).name+"_co", true);

//ベース素材複製;

activeComp.layer(3).duplicate( );

//4フレに統一;

activeComp.layer(1).outPoint = 4/activeComp.frameRate;
activeComp.layer(2).outPoint = 4/activeComp.frameRate;
activeComp.layer(3).outPoint = 4/activeComp.frameRate;

//上2つを複製;

activeComp.layer(2).duplicate( );
activeComp.layer(2).moveToBeginning();

activeComp.layer(2).duplicate( );
activeComp.layer(2).moveToBeginning();

//5階層目を全面に移動;

activeComp.layer(5).moveToBeginning();

//レイヤーを並べる。;
//var framePitch=4

activeComp.layer(5).startTime =4/activeComp.frameRate*0;
activeComp.layer(4).startTime =4/activeComp.frameRate*1;
activeComp.layer(3).startTime =4/activeComp.frameRate*2;
activeComp.layer(2).startTime =4/activeComp.frameRate*3;
activeComp.layer(1).startTime =4/activeComp.frameRate*4;

app.project.activeItem.layers.precompose([1,2,3,4,5], activeComp.layer(1).name+"_re", true);

//コンポジションの長さ調節;

activeComp.selectedLayers[0].outPoint=1/activeComp.frameRate*20;

//ベース素材スタート地点変更

activeComp.layer(2).startTime =1/activeComp.frameRate*4*5*8;

for(var i=0;i<7;i++){
activeComp.layer(1).duplicate( );
}

//レイヤーを並べる。;

activeComp.layer(8).startTime =20/activeComp.frameRate*0;
activeComp.layer(7).startTime =20/activeComp.frameRate*1;
activeComp.layer(6).startTime =20/activeComp.frameRate*2;
activeComp.layer(5).startTime =20/activeComp.frameRate*3;
activeComp.layer(4).startTime =20/activeComp.frameRate*4;
activeComp.layer(3).startTime =20/activeComp.frameRate*5;
activeComp.layer(2).startTime =20/activeComp.frameRate*6;
activeComp.layer(1).startTime =20/activeComp.frameRate*7;

activeComp.layer(9).moveToBeginning();

//プリコンポジション;

app.project.activeItem.layers.precompose([1,2,3,4,5,6,7,8,9], activeComp.layer(9).name+"_moth", true);

//スライダー1を追加;
app.project.activeItem.selectedLayers[0]("Effects").addProperty("ADBE Slider Control");
app.project.activeItem.selectedLayers[0]("Effects")("Slider Control")["Slider"].setValueAtTime(0,1);
app.project.activeItem.selectedLayers[0]("Effects")("Slider Control").name="口パク間隔(Def=1)";

//スライダー2を追加;

app.project.activeItem.selectedLayers[0]("Effects").addProperty("ADBE Slider Control");
app.project.activeItem.selectedLayers[0]("Effects")("Slider Control")["Slider"].setValueAtTime(0,1);
app.project.activeItem.selectedLayers[0]("Effects")("Slider Control")["Slider"].setInterpolationTypeAtKey(1,KeyframeInterpolationType.HOLD);
app.project.activeItem.selectedLayers[0]("Effects")("Slider Control").name="0で開始1で停止";

app.executeCommand(2153);

var exPrs="motionDuration = thisComp.frameDuration*160;nKey = effect(\"0で開始1で停止\")(\"Slider\").nearestKey(time*effect(\"口パク間隔(Def=1)\")(\"Slider\"));if(time < nKey.time){cIndex = nKey.index-1;} else {cIndex= nKey.index;}if(cIndex > 0){cKey = effect(\"0で開始1で停止\")(\"Slider\").key(cIndex);time*effect(\"口パク間隔(Def=1)\")(\"Slider\")-cKey.time+cKey*motionDuration} else {0}";

app.project.activeItem.selectedLayers[0].property("timeRemap").expression= exPrs;

//キーフレームのあるプロパティを表示;

app.executeCommand(2387);
}
    
    };

//////////////////////////////////////////////////////////////////////////////

//第2テキストとボタン;

palette.add("statictext",[10,70,180-10,110-10],"開き目を下にして3つを選択");
var e = palette.add("button",[10,100,180-10,140-10],"オート目パチ");

//ボタントリガー;

e.onClick = function()
{
//イベント置き場

var activeComp= app.project.activeItem;
var tempLength = activeComp.selectedLayers.length;

if(tempLength > 3){
     alert('選択レイヤーがが3つじゃありません(多い)'); 
}else if (tempLength < 3){
  alert("選択レイヤーがが3つじゃありません(少ない)");
}else{

//全面に移動;

app.executeCommand(2016);

//3フレに統一;

activeComp.layer(1).outPoint = 3/activeComp.frameRate;
activeComp.layer(2).outPoint = 3/activeComp.frameRate;
activeComp.layer(3).outPoint = 3/activeComp.frameRate;

//上2つを複製;

activeComp.layer(2).duplicate( );
activeComp.layer(2).moveToBeginning();

activeComp.layer(4).duplicate( );
activeComp.layer(4).moveToBeginning();

//一番上を4フレに;

activeComp.layer(1).outPoint = 4/activeComp.frameRate;

//レイヤーを並べる。;
//var framePitch=3

activeComp.layer(5).startTime =3/activeComp.frameRate*0;
activeComp.layer(4).startTime =3/activeComp.frameRate*1;
activeComp.layer(3).startTime =3/activeComp.frameRate*2;
activeComp.layer(2).startTime =3/activeComp.frameRate*3;
activeComp.layer(1).startTime =3/activeComp.frameRate*4;

app.project.activeItem.layers.precompose([1,2,3,4,5], activeComp.layer(1).name+"_re", true);

//////タイムリマップ、エクスプレッション付け;

//タイムリマップ有効;
app.executeCommand(2153);

//エクスプレッション記述;

var exPrs="loopOut(type = \"cycle\", numKeyframes = 0)";
app.project.activeItem.selectedLayers[0].property("timeRemap").expression= exPrs;
app.project.activeItem.selectedLayers[0].property("timeRemap").removeKey(2);

//キーフレーム打ち;

app.project.activeItem.selectedLayers[0].property("timeRemap").setValueAtTime(3/activeComp.frameRate*5,3/activeComp.frameRate*5);
app.project.activeItem.selectedLayers[0].property("timeRemap").setValueAtTime(1/activeComp.frameRate*80,0);
app.project.activeItem.selectedLayers[0].property("timeRemap").setValueAtTime(1/activeComp.frameRate*95,3/activeComp.frameRate*5);
app.project.activeItem.selectedLayers[0].property("timeRemap").setValueAtTime(1/activeComp.frameRate*140,0);

app.project.activeItem.selectedLayers[0].property("timeRemap").setInterpolationTypeAtKey(2,KeyframeInterpolationType.LINEAR,KeyframeInterpolationType.HOLD);
app.project.activeItem.selectedLayers[0].property("timeRemap").setInterpolationTypeAtKey(4,KeyframeInterpolationType.LINEAR,KeyframeInterpolationType.HOLD);

}};

//イベント終了;

///////////////////////////////////////

//第3テキストとボタン;

palette.add("statictext",[10,130,180-10,170-10],"エクスプレッションを記述");
var h = palette.add("button",[10,160,180-10,200-10],"ループ用explession");

//ボタントリガー;

h.onClick = function()
{
//イベント置き場

var Exp ="loopTime = 0;\nnumLoop = 0; \nkeyN = 0; \nshiftTime=0; \ncycleTime =key(numKeys).time; \n\nif (effect(\"control\")(\"Slider\").numKeys){\nkeyN = effect(\"control\")(\"Slider\").nearestKey(time).index;\nif (effect(\"control\")(\"Slider\").key(keyN).time > time) keyN--;\n}\n\nif (keyN > 0) {\nnumLoop = effect(\"control\")(\"Slider\").valueAtTime(time);\nshiftTime = time - effect(\"control\")(\"Slider\").key(keyN).time;\n\nif (shiftTime < numLoop * cycleTime ) {\nloopTime = shiftTime % cycleTime ;\n}\n}\n\nvalueAtTime(loopTime )";
var undoStr = "Set Expression";
var activeLayer = app.project.activeItem.selectedLayers[0];

app.beginUndoGroup(undoStr);

 var arr=activeLayer.selectedProperties;

 for (var i=0; i<arr.length; i++)
 if (arr[i]) arr[i].expression=Exp;

 for (var i=0; i<arr.length; i++)
 if (arr[i]) arr[i].addKey(app.project.activeItem.selectedLayers[0].time);
 
var arr1=app.project.activeItem.selectedLayers;
for (var i=0; i<arr1.length; i++)
if (arr1[i]) arr1[i]("Effects").addProperty("ADBE Slider Control");
 
   for (var i=0; i<arr1.length; i++)
 if (arr1[i]) arr1[i]("Effects")("Slider Control")["Slider"].setValueAtTime(app.project.activeItem.selectedLayers[0].time,1);

   for (var i=0; i<arr1.length; i++)
 if (arr1[i]) arr1[i]("Effects")("Slider Control")["Slider"].setInterpolationTypeAtKey(1,KeyframeInterpolationType.HOLD);

   for (var i=0; i<arr1.length; i++)
 if (arr1[i]) arr1[i]("Effects")("Slider Control").name="control";

app.executeCommand(2387);

 app.endUndoGroup();

};

//イベント終了;

///////////////////////////////////////

 if ( ( me instanceof Panel) == false){		palette.center();
		palette.show();
        }})(this);