AEスクリプトのfor文はほぼ形が決まっています。以下のものをテンプレートとして使えます。
var mAi = app.project.activeItem;
var mSls = mAi.selectedLayers;
for (var i = 0; i < mSls.length; i++) {
mSls[i].enabled = false;
}
日本語訳です。
- 変数『mAi』= タイムラインが出ているコンポジション。
- 変数『mSls』= 選択レイヤー群。
- 「変数 i はとりあえず 0 で」「 i が選択レイヤー群の総数未満のうちは」「ループして i を1ずつ増やすよ」
- ループ中、選択レイヤー群の[i]番目レイヤーの目玉マークを消していく。
STEP
ループ処理する対象。
var mAi = app.project.activeItem;
var mSls = mAi.selectedLayers;
AEでループ処理する対象はこの『mSls』(選択レイヤー群)であることが多いです。他には以下のものがあります。共通点は『同じ種類のたくさんあるもの』ですね。
- プロパティ群
- シェイプやマスクの点群
- プロジェクトパネルのアイテム群
STEP
ループ処理部分。
for (var i = 0; i < mSls.length; i++) {
mSls[i].enabled = false;
}
やっていることは日本語訳の通りです。ポイントは、
- 真ん中のループ終了条件に『mSls.length』(選択レイヤー群の総数)を使い、選択レイヤーの数だけループさせている。
- iはループするたび1ずつ増えるようにしてある。つまり、ループ処理とは言っているがループ毎にiは変わる。
- ということは、処理内容にiを使い、かつそれをmSls[〇]の番号にすれば、ループ毎にmSls[i]はmSls[0]、mSls[1]…と変わっていく。つまり、すべての選択レイヤーに処理を行っていることになる。
ということです。
*補足:『length』は1始まりの総数です。対して、mSls[〇]で指定する番号は0始まりなので、ループ回数はlength-1で終われば数が合う。なので、『<=』だと1回多くなってしまうので『<』で合っていますね。
for文に関しては以上です。