【AEスクリプト】書き方04 for文

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文に関しては以上です。

よかったらシェアしてね!
  • URLをコピーしました!