第四章 swfファイルの軽量化 - 3

for文による繰り返し処理

先ほど1フレームに記述した関数dl_pictには、非常に無駄な部分があります。

上記の14行目~22行目の9行は、pictの後ろの数字(0〜8)が違うだけで、それ以外は全て同じ内容です。このような場合は、繰り返し処理を使えば何度も同じような内容を記述する必要はありません。

繰り返し処理(for文)

繰り返し処理は、条件分岐処理と同様に、プログラムの基本的な概念になります。今回のように数値を変化させて繰り返し処理を行うような場合は、for文を使います。

for文の公式

for(初回処理;条件;変化) {
処理;
}

for文の動き

for文は、次のような流れで動き、条件を満たしている間、処理を繰り返します。

  • 初回は、初回処理を実行→条件を満たしている場合→処理を実行→変化
  • 2回目以降は、条件を満たしている場合→処理を実行→変化
  • 回数に関係なく条件を満たしていない場合は、その時点でfor文から抜ける

例えば、次のように記述すると、1から10までの数をtraceで表示します。

for(var i:Number=1;i<=10;i++) {
trace(i);
}

関数dl_pictをfor文を使って記述

このfor文を使って、関数dl_pictを記述すると次のようになります。

インスタンス名のパスの指定に変数を利用

今回はインスタンス名のパスに、変数iを指定する必要があります。そのような場合は、次のように記述します。

_root.thumbnail_mc["pict" + i].base_mc

これで変数iに0が入っている場合、thumbnail_mcの中に配置されているインスタンスpict0のbase_mcという意味になります。変数iの値が2になればpict2、3になればpict3と、for文による繰り返し処理でpict8まで変化します。

カテゴリのタイトルを切り替える

さらにはfor文を使って、左側のカテゴリのタイトルの表示の切り替えを行います。

左側のカテゴリのタイトルには、cat0_title〜cat4_titleのインスタンス名をつけています。for文で一度全てのタイトルを非表示にして、再度該当カテゴリのタイトルのみを表示するようにします。

これを関数dl_pict内に付け加えると、次のようになります。

actionレイヤーのコード ※関数dl_pict以外は変更なし

この時点でプレビューすると左側のタイトルが山になりました。