「AEでも前方選択するスクリプト「selectForword.jsx」」の亜種です。
[概要]
シーンを丸ごと前後にスライドしたい場合、今見えてるレイヤー全部というか、再生インジケーターがある箇所のレイヤーを狙って選択したい。
コンポジションパネルで全画面をグリっとドラッグ選択してもいいのですが、画面外の遠くにあるレイヤーがあるとドラッグ範囲に漏れてしまいます。
非表示のレイヤー、ロックが掛かったレイヤーは省いていいです。
目視、手作業では漏れが発生するので、現在時間でアクティブなレイヤーが分かれば、選択状態にするだけです。
となると意外と簡素に出来ました。
[使い方]
- 選択したいレイヤーにかかるように再生インジケーターを移動する
- スクリプトを実行する
[解説]
var actCmp=app.project.activeItem;
function f_selectCurrent(){
for(i=1;i<=actCmp.layers.length;i++){
actCmp.layer(i).selected=false;
if(actCmp.layer(i).active==true){
actCmp.layer(i).selected=true;
}//if
}//for
}
app.beginUndoGroup("undo");
f_selectCurrent();
app.endUndoGroup();
まず、for文が1から開始になっています。
当サイトで多用している選択中のレイヤー(app.project.activeItem.selectedLayers)であれば、配列に入るので[0]開始ですが、今回はアクティブコンポジションのレイヤーを上からチェックしてきます。
レイヤー番号は1から始まるのです。そのため繰り返し条件は”最後のレイヤー番号=レイヤー数を「含める」”必要があり、「<」でなく「<=」です。
i=1;i<=actCmp.layers.length
ここだけエラーくらい易いところなのでメモしておきます。
「.active」でレイヤーが現在時間にアクティブかどうかを返してくれます。
「true」か「false」で帰ってきます。
trueの場合に「.selected=true」で選択状態をtrueに書き換えられます。
ただし!アクティブでもロックが掛かってれば「.selected」を「true」にできないようで、ちょうど希望通りの処理になりました。
もしロックが掛かったレイヤーも強制ロック解除して選択したい場合は、8行目(if文の中)に
actCmp.layer(i).locked=false;
を追加してください。
この記事へのコメントはありません。