AfterEffects de KokoroUkiuki

Expression

for文の基本 

for文を利用してみましょう。
for文 は繰り返しの処理をしてくれる働く言葉です。

何を繰り返すか、ということで
運用方法には可能性があるものですが
ここではたくさんの文字を繰り返したいと思います。
打ち込まずに、たくさんの文字を配置したいと思います。

今回は面積的な繰り返しとも言えますが
for文を時間軸に利用しますと
変数を保存できるような扱い方もできます。
そちらはまたの機会に、と思います。

今回、テキストにエクスプレッションを利用しますので
その準備をしましょう。

テキストツールでコンポジションの好きな箇所をクリックします。
何も入力しないで確定します。
すると文字が入っていない空のテキストレイヤーが用意できます。

ちなみに空のテキストレイヤーでなく
何かしら文字を打ってもかまいません。
この後のエクスプレッションのテキスト情報が優先され
任意に入力したテキストは表示されません。

次に、テキストレイヤーを展開すると
ソーステキストというパラメータのストップウォッチを
オプションを押しながらクリックします。

エクスプレッションフィールドが現れますので

t="";
for(i=0;i<20;i++){
t=t+"1"
}

と入力します。

すると
1が20個ならんだものができました。

この毎フレーム、同じエクスプレッションの処理が行われます。
この記述では毎回結果が同じですので変化はありませんが
これを応用すると
文字が変化させたり
改行指示も含めて画面いっぱいにテキストを配置したりできます。

上記のシンプルな形をくわしく見ていきましょう。

一行目について。

t="";

これは文字を入れる箱を用意しています。
今回、箱の名前をtと任意に決めました。
Aでもよいですし、お好きなものでよいです。
ただし、timeなど
エクスプレッションで働く言葉として用意されているものは利用できません。
そして text と名付けたくなりますが
これも働く言葉なので利用できません。

二行目について。

for(i=0;i<20;i++){

for文には下記の構造があります。

for(A,B,C){
処理内容
}

まずABC共通で使われています i というものについてですが
これは j でもなんでもかまいません。
ただiというのはfor文で慣例的に利用されていますのでそれにならいました。
このiとしたものはカウンターとして働く変数で
上記のサンプルでは1フレームを描くのに
20回の繰り返しをしてくれるのですが
処理中にAE自身が1回、2回とその回数を記憶しておく場所といえます。

それではABCについて見ていきましょう。

Aは繰り返す数を数えはじめる数です。
「0から」、1、2、3や
「1から」、2、3、4や
「8から」、7、6、5など
その数え始める数です。
処理の内容によってそのスタートを任意に指定できるので
自由度があり、目的の形にフィットできます。


Bは「いつまで」処理を繰り返すのかを指定します。


Cは処理の増減の幅を決めます。
0から1、2、3と「1づつ増やして」いくのか
8から7、6、5と「1づつ減らして」いくのか
あるいは
0から0.5、1、1.5、、と「0.5づつ増やして」いく事もできます。


i++
とありますが
これは
i=i+1
と同じです。

数学では見慣れない形ですね。
プログラムにおける = は等号ではなくて代入となります。
そうして見ると、右辺が左辺に入り、iの値が更新されます。

全体の流れとして
まず iが0回目と名付けた1回目の処理が始まります。

t="";
for(i=0;i<20;i++){
t=t+"1" ←処理
}

処理としては
空のテキストボックスとしての t に
1という文字がひとつ入り
空だった t が更新され
一回目の処理が終わります。

ここでエクスプレッションは処理を終えてよいのかな?と次のような事を考えます。
iがいまは0で
i++だから
カウンターのiを1に変更して
ストップするリミットとしてのi<20にひっかかっていないかな?
いま、iは1であって20未満だから
まだ処理を繰り返してよいんだな、ということで
カウンター変数が1となって二回目の処理を行います。
現在、tにはひとつ1という文字が入っていますが
そこにもうひとつ1という文字を加えて
11という文字を返します。
これを繰り返して20未満まで繰り返して
1フレーム目の描画を終えます。
結果として 1 という文字が20個並んだものができます。

毎フレーム、変化はありませんが同じ処理を繰り返します。
(毎フレーム20回処理を繰り返します。)
ただせっかく繰り返しの処理をしているのに
結果が静的で面白みがありません。

次回は、マトリックスのような0と1が動いて
上から下へ切り替わるようなものを見ていきたいと思います。