if文による条件分岐を学ぼう!
使い終わったonEnterFrameは?
前回、連続した位置移動を行うためにonEnterFrameを解説しました。前回のサンプルでは「目的地 / targetX」への「距離 / distanceX」を5分の1ずつ縮めていくことで、なめらかなイージングを表現しました。この方法では一見「距離 / distanceX」が「目的地 / targetX」に到達しているように見えるのですが、実際にはdistanceXが完全に0になることはありません。差が縮まったインスタンスがどのような動きをとっているか、trace関数を使って確認していきましょう。
trace関数は実行中の処理を「出力パネル」にメッセージとして表示させることができます。trace()の引数に変数を入れることで、ムービーの動作状況を確認できるため、ActionScriptのコーディング作業ではよく使います。
ムービープレビューで確認すると「距離 / distanceX」は0.199999999999989でループし続けます。distanceXが完全に0値につけかず、そのまま連続再生が続くからです。連続再生のonEnterFrameは対象のインスタンスが役目を終えてしまっても、onEnterFrameの停止の命令を行わない限り連続再生し続けます。サンプルファイルはこちらからをダウンロード(http://www.thinkit.co.jp/images/article/81/3/8131.zip)できます(8131.zip/25.5 KB)。
これはPCの処理を無駄に使用することとなり、Flashの処理速度にも影響します。常に動き続けているか、もしくはイベントが発生するタイミングを待つムービークリップの場合を除いて、使う予定がなくなったonEnterFrameは止めるように心がけましょう。
そして次にプログラミング言語に必要とされる「if文」を学び、条件分岐によって実際にonEnterFrameを止めてみます。
if文を学ぶ
プログラミングでは処理の中で、条件を分岐する場合があります。この時に条件式に見合わせて、「条件に合う場合」に行う処理と、「条件に合わない場合」に行う処理という分け方を行います。
条件が1つの場合で、条件に合う時に実行する処理はリスト1になります。
また、条件式に合わない場合の処理を付け加えることも可能です(リスト2)。
さらに、条件式を増やしていくこともできます(リスト3)。