第二章 プログラムの基礎概念(条件分岐・変数)- 4

条件分岐処理(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メソッドで止まらず、ループで再生されてしまうからです。