「タイムリマップでレイヤー管理するスクリプト(フリーズフレーム)「tRemapSelectorSetter@freeze.jsx」」もしくは「タイムリマップでレイヤー管理するスクリプト(2フレーム以上)「tRemapSelectorSetter@time.jsx」」で作ったフレーム選択エフェクト「#リマップ番号」の値を、選択した2つのレイヤー間で入れ替えるスクリプトです。
[概要]
tRemapSelectorSetterした後でコンポジション上の並び順を変更したい場合、取りまとめたコンポジションを開いて入れ替えれば良いのですが、編集後半で元コンポジション内での順番は変えたくなく、見た目上の順番だけ変えたいといった場合が該当します。
入れ替えたい2つのレイヤーの#リマップ番号を手作業で入れ替えますよね。
手間だしレイヤー名についてる番号と齟齬が生じて見た目上管理が行き届かなくなります。
ありますよ。こんなとき用のスクリプト。
「#リマップ番号」とレイヤー名を同時に入れ替えます。
[使い方]
- 入れ替えたいレイヤーを2つ選択状態でスクリプトを実行する
のみ。
[解説]
function f_numSliderSwapper(){
var sel=app.project.activeItem.selectedLayers;
if(sel.length>1){
var selName0=sel[0].name,selName1=sel[1].name;
var fxName0,fxName1,fxVal0,fxVal1;
var numFx0=sel[0].property("ADBE Effect Parade").numProperties;
for(i=1;i<=numFx0;i++){
fxName0=sel[0].property("ADBE Effect Parade").property(i).name;
if(fxName0.search(/^#/)==0){
fxVal0=sel[0].property("ADBE Effect Parade")(fxName0)(1).value;
break;
}
}//numFx
var numFx1=sel[1].property("ADBE Effect Parade").numProperties;
for(i=1;i<=numFx1;i++){
fxName1=sel[1].property("ADBE Effect Parade").property(i).name;
if(fxName1.search(/^#/)==0){
fxVal1=sel[1].property("ADBE Effect Parade")(fxName1)(1).value;
break;
}
}//numFx
sel[0].property("ADBE Effect Parade")(fxName0)(1).setValue(fxVal1);
sel[1].property("ADBE Effect Parade")(fxName1)(1).setValue(fxVal0);
sel[0].name=selName1;
sel[1].name=selName0;
}//if(sel.length<=1)
}//function numSliderSwapper
app.beginUndoGroup("numSliderSwapper");
f_numSliderSwapper();
app.endUndoGroup();
9行目「if(sel.length>1){」で選択したレイヤーが2つ未満ならメイン処理はスキップします。
そして念の為、選択レイヤーにエフェクトを独自に追加している場合などを考慮し、「[レイヤー].property(“Effects”).numProperties」で一旦適用されているエフェクトの数を取り出し、for文で「#」で始まるエフェクト名を探します。概ね「#リマップ番号」以外でエフェクト名を「#」で始まる名前にリネームしていることはないと想定し、これの値(value)を保存しておきます。
そしたら「1個目の選択レイヤー名+#リマップ番号の値」と「2個目の選択レイヤー名+#リマップ番号の値」を入れ替えたれば終わりや。
注意点
「#」で始まるエフェクト名が見つかったら以降のエフェクト名は検索しないので、「#リマップ番号」以外に「#」で始まるエフェクト名がある場合は「#リマップ番号」エフェクトは一番上にしておくと安全です。
この記事へのコメントはありません。