条件演算
ActionScript 3.0 は、プログラムフローの制御に使用できる 3 つの基本的な条件ステートメントを提供します。
if..else
if..else 条件ステートメントを使用して、条件をテストし、その条件が存在する場合はコードブロックを実行し、その条件が存在しない場合は代わりのコードブロックを実行します。例えば、次のコードは x の値が 20 を超えるかどうかをテストし、超える場合は trace() 関数を生成し、超えない場合は異なる trace() 関数を生成します。
if (x > 20)
{
trace("x is > 20");
}
else
{
trace("x is <= 20");
}
別のコードブロックを実行しない場合は、else ステートメントのない if ステートメントを使用できます。
if..else if
if..else if 条件ステートメントを使用すると、複数の条件をテストできます。例えば、次のコードは、x の値が 20 を超えるかどうかをテストすると共に、x が負の値かどうかをテストします。
if (x > 20)
{
trace("x is > 20");
}
else if (x < 0)
{
trace("x is negative");
}
if または else ステートメントに続くステートメントが 1 つだけの場合は、ステートメントを中括弧で囲む必要はありません。例えば、次のコードは中括弧を使用していません。
if (x > 0)
trace("x is positive");
else if (x < 0)
trace("x is negative");
else
trace("x is 0");
ただし、後で中括弧のない条件ステートメントがステートメントに追加された場合に予期しない動作を引き起こす可能性があるため、常に中括弧を使用することをお勧めします。例えば、次のコードで positiveNums の値は、条件が true と評価されるかどうかに関係なく 1 増加します。
var x:int;
var positiveNums:int = 0;
if (x > 0)
trace("x is positive");
positiveNums++;
trace(positiveNums); // 1
switch
switch ステートメントは、同じ条件式に依存する複数の実行パスが存在する場合に便利です。一連の if..else if ステートメントに似た機能ですが、多少読みやすくなっています。switch ステートメントは、ブール値の条件をテストするのではなく、式を評価し、その結果を使用して実行するコードブロックを決定します。コードブロックは、case ステートメントで始まり、break ステートメントで終わります。例えば、次の switch ステートメントは、Date.getDay() メソッドによって返された日数に基づいて曜日を出力します。
var someDate:Date = new Date();
var dayNum:uint = someDate.getDay();
switch(dayNum)
{
case 0:
trace("Sunday");
break;
case 1:
trace("Monday");
break;
case 2:
trace("Tuesday");
break;
case 3:
trace("Wednesday");
break;
case 4:
trace("Thursday");
break;
case 5:
trace("Friday");
break;
case 6:
trace("Saturday");
break;
default:
trace("Out of range");
break;
}