条件分岐処理(if文)
続いてenterFrameイベントハンドラの処理を解説します。
enterFrameイベントハンドラ内では、条件分岐という処理を行っています。条件分岐処理はプログラムの基本的な概念で、ActionScriptでも、頻繁に利用します。
条件分岐処理(if文)
if文の公式は下記のようになります。
if文の公式
if(条件) {
ifの条件にあった場合の処理
} else if(条件) {
else ifの条件にあった場合の処理
} else {
elseの処理
}
if
ifは、"もしも~なら"という意味になります。()内で条件を指定し、{}内に処理を記述します。()で指定した条件を満たしているときは処理を実行します。if文は必ずifではじめます。一つのif文には、ifは一度しか使えません。
else if
else ifは、"あるいは~なら"という意味になります。ifと同様に、()内に条件を、{}内に処理を記述し、条件にあった場合に処理を実行します。else ifによる条件は何度でも指定することができます。
else
elseは、"それ以外は"、という意味になります。ifや、else ifで指定した条件をどれも満たしていない場合に処理を行います。elseの処理は必ず最後に記述します。
if文を使った例(おみくじのプログラム)
おみくじのプログラムをサンプルとして、if文の実際の使用例を見てみましょう。
var num:Number = Math.random() * 100
if(num >= 90) {
trace("大吉");
} else if(num >= 70) {
trace("中吉");
} else if(num >= 50) {
trace("小吉");
} else if(num >= 30) {
trace("吉");
} else if(num >= 10) {
trace("凶");
} else {
trace("大凶");
}
2つ以上の処理を行うことはない
上記のサンプルで、例えば変数numに95という値が入った場合は、90以上であり、70以上もあり、50..30..10であり、全ての条件を満たしています。しかしif文は上から条件を見ていき、一度でも条件を満たして処理を行った場合、それ以降の条件や処理は全て飛ばして、if文の終了の位置に移動します。
そのため変数numに95が入っていても、実際には大吉という文字が表示されるのみとなります。
if文の規則
それ以外にもif文に関してはいくつかの注意点があります。
- 必ずifではじめる
- 必要なければ、else ifやelseは省略してもよい
- elseが入る場合は、必ず最後の条件になる
- ifとelse ifで()内の条件を省略することはできない
- elseには条件を指定できない
比較演算子
if文の条件を指定するときには、比較演算子を使います。比較演算子とは左辺と右辺を比較するための記号です。"<"などは、数学に出来てた不等号と全く同じ意味になります。よく使用する比較演算子として、下記のようなものがあります。
| a == b | aとbが等しい |
|---|---|
| a != b | aとbが等しくない |
| a <= b | aがb以下 |
| a >= b | aがb以上 |
| a > b | aがbより大きい |
| a < b | aがbより小さい |
| a == b && c == d | aとbが等しく、なおかつcとdも等しい |
| a == b || c == d | aとbが等しい、またはcとdが等しい |
&&の場合は両辺とも満たしている状態が条件となり、
|| の場合はいずれか一方(両方でも可)でも満たしている状態を条件とします。
フレームを再生をランダムにスタートする
ではenterFrameイベントハンドラ内のif文をみてみましょう。
thumbnail_mcの中のpict0 〜 pict8 に記述するコード

変数・メソッドの整理
if文の()内の条件に使用している変数やメソッドの意味を整理してみます。
| load_time(変数) | ムービークリップが読み込まれた時の経過時間 |
|---|---|
| wait_time(変数) | ランダムに発生させた待機時間(0~1000) |
| getTimer(メソッド) | 現在の経過時間 |
| flg(変数) | falseが代入されているBoolean型変数 |
このif文の条件は、下記のようになります。
読み込み時の時間(load_tim)に待機時間(wait_time)を足したものより、現在の時間(getTimer)の方が大きく、なおかつ変数flgがfalseであれば
つまり待機時間を過ぎていて、なおかつflgがfalseであればという意味になります。この条件を満たしていた場合は、変数flgにtrueを代入し、そしてフレームを再生(play)しています。
ここで変数flgにtrueを代入しているのは、二度とこのif文の条件を満たすことがないようにするためです。そうでないと、15行目のplay()メソッドが何度も実行されて、フェードインの終了フレームに記述したstopメソッドで止まらず、ループで再生されてしまうからです。