After Effects

JavaScriptのループ処理「for文」

JavaScriptでループ(繰り返し)処理を行えるfor文をご紹介します。

for文の構文

for(1.カウンタの初期化式;2.繰り返す回数の条件式;3.カウンタの加算式){
    繰り返す処理;
}

と3つの式を指定し、「{}」内の処理を、カウンタが2.繰り返す回数の条件である内はひたすら繰り返します。

構文例

例えば、テキストレイヤーのソーステキストに下記のエクスプレッションを適用すると…

var txt="";
for(var i=0; i<5; i++){
    txt=txt+(i+1)+"回目の処理\n";
}
// (\nは改行)
1回目の処理
2回目の処理
3回目の処理
4回目の処理
5回目の処理

と表示されます。

「i=0」から始まるため、文章を表示する処理内では(i+1)で「1」から表示しています。iそのままでは1回目の処理で「0回目の処理」という文章を表示してしまいます。

条件式の「i<5」である間は繰り返すので、「i++」で繰り返す度にiを1プラスし、5回目の処理が終わった後、i=5となり、条件式から外れるため繰り返し処理が終了します。

iに1を足す処理「i=i+1」を簡単に記述すると「i++」

iから1を引く処理「i=i-1」を簡単に記述すると「i–」と短くすることができます。

また、今回の文章ではi+1とすると混乱するという場合は

var txt="";
for(var i=1; i<=5; i++){
    txt=txt+i+"回目の処理\n";
}

としても結果は同じです。「i=1」から始まり、iを1ずつプラスし、「i<=5(iが5以下)の間繰り返し、5回目の処理が終わると「i=6」となり繰り返し処理が終了します。

今回のfor文では、繰り返し中は「i」が1ずつプラスされるため、1ずつズレる数値としてiが活躍します。

実例

それでは実例として、またテキストのソーステキストに適用するエクスプレッションで、コンポジション内の全レイヤー名をリスト化します。

var txt="";
for(var i=1; i<=thisComp.numLayers; i++){
    txt=txt+thisComp.layer(i).name+"\n";
}

ポイントは「thisComp.numLayers」です。「このコンポジションの、レイヤー数」が数字で返ってきます。

つまり繰り返し処理内の「thisComp.layer(i).name」で「上から1つ目のレイヤー名」「2つ目のレイヤー名」…を取得し、最後のレイヤー名を取得した後、「i=レイヤー数+1」となり条件から外れ、処理が終了します。

for文から抜ける「break;」

「break;」で繰り返し途中でもループを抜けられます。

使い所はというと、先程のプログラムに追記すると

var txt="";
for(var i=1; i<=thisComp.numLayers; i++){
    if(thisComp.layer(i).name=="テキストレイヤー 5"){
        break;
    }else{
        txt=txt+thisComp.layer(i).name+"\n";
    }// if
}// for

txt;

これで、「テキストレイヤー 5」という名前のレイヤーがあれば、そこで「break;」へ条件分岐し、変数「txt」にレイヤー名を追加せずに繰り返し処理が終了しますので、「テキストレイヤー 5」を含めず、その一つ前までのレイヤー名がリストとして取得できます。

応用

var txt="";
for(var i=thisComp.numLayers; i>=1; i--){
    txt=txt+thisComp.layer(i).name+"\n";
}// for

iがレイヤー数から始まり、iを1ずつ減らしながら、iが1以上の間処理を繰り返します。つまり、レイヤー名を下から上に逆順でリスト化します。

初期化式、条件式、加算式を駆使して、思い通りの繰り返し処理を実現しましょう。

次回予告

次回はJavaScript基本編の最終記事、「関数」について学びます。

この記事を以て、ほぼスクリプト、エクスプレッションを自作するための基本的なプログラムを修了することとなります。

他者の制作したJavaScriptを読めるようになり、調べながらでも自身がスクリプトやエクスプレッションを作れるレベルになっています。

是非「関数」までモノにして、自動化、効率化の世界へ飛び出しましょう。

下記リンクから飛べます。

JavaScriptでの特殊文字の指定方法前のページ

「関数」でJavaScriptを自在に操る次のページ

ピックアップ記事

  1. なぜ?After Effectsの操作を「スクリプト」で効率化
  2. なぜ?After Effectsのレイヤーをエクスプレッションで効率化
  3. フリーランスの開業届提出は開業freeeでとにかく簡単に

関連記事

  1. After Effects

    絵コンテ.aep【Aeで絵コンテ制作するアイディア】

    全てをAfter Effectsで作る体になってしまった方へ。…

  2. After Effects

    ゲーム制作テクニックで遊ぶAfter Effects

    そんな興味深いゲーム制作から生まれたテクニックから、After Eff…

  3. After Effects

    「if文」でJavaScriptにハマる

    今回はプログラムの醍醐味である「条件分岐」を学びます。"もし…

  4. After Effects

    JavaScriptでの特殊文字の指定方法

    Javascriptコード内で改行などの特殊文字をどう記述するか学んで…

  5. After Effects

    JavaScriptの「コメント」の書き方

    エクスプレッションを後で見直した際に分かりやすくする方法、「コメントア…

  6. After Effects

    LINE画面.aep【専用爆速スクリプト付テンプレート】

    LINE風のやりとりをAfter Effectsで再現するテンプレート…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA