Platform: All
Version: Flash 4 and above
シンタックス
switch (式) {
case 式:
ステートメント;
[default:
ステートメント;]
}
パラメータ
式 厳密な等価を調べる式。比較の対象とすべき式をswitchステートメントに指定し、その式の値と一致するかどうか調べる式をcaseステートメントに指定します[*1]。
[*1] Javaでは、caseステートメントの式は、整数の定数式でなければならないという制限があります(「Javaの道:制御文(if、switch)」参照)。しかし、ActionScriptのcaseステートメントには、どのような式でも指定することができます。
|
説明
ActionScriptの処理に条件を与えて、その流れに分岐をもたらします。複数の等価を条件とするif/else if/elseステートメントで、一方の辺(オペランド)が共通の式になる場合、switchステートメントを使用するとすっきりと記述できます。switchステートメントの条件には、等価条件を判定するための一方の辺となる式のみを指定します。等価を調べるもう一方の辺の式は、caseステートメントを使って指定し、条件が満たされた(trueと評価された)場合に処理すべきステートメントを記述します。
switchステートメントが実行されると、条件の式の値を求め,その値に一致するcaseステートメントの式を探します。一致するcaseステートメントがあったら、そこに記述されたステートメント以降のコードブロックを実行します。一致するcaseステートメントがなく、defaultという特別なcaseステートメントがあれば、いずれのcaseステートメントにも合致しない場合として、そのステートメントが処理されます。一致するcaseステートメントがなく、defaultもない場合には、switchステートメントのすべてのコードブロックがスキップされます[*2]。
switchステートメントの条件に一致したcaseステートメントがあった場合、そこに記述されたステートメント以降のすべてのコードブロックが実行されることに注意しましょう。つまり、その一致したcaseステートメント以降に記述されたcaseステートメントも、そのまま続けて実行されます。それを避けるためには、caseステートメントに記述したコードブロックの最後にbreakまたはretrurnステートメントを挿入して、明示的に処理を中断または終了する必要があります(スクリプト001参照)。
switchステートメントで評価されるのは、厳密な等価です[*3]。つまり、厳密な等価演算子===で比較した場合と同じく、データタイプが異なれば等価とは評価されません。たとえば、文字列の"1"と数値の1は、厳密な等価が否定されます。
[*2] caseステートメントやdefaultステートメントについては、「ActionScriptリファレンスガイド」(Flash MX 2004)のcaseおよびdefaultの項を併せてご参照ください。
[*3] Flash Player 4で書出すと、等価(==)で評価されます。たとえば、文字列"1"と数値1は、等価となります。
。
|
例
つぎのスクリプトをMovieClipのフレームアクションに設定すると、インスタンスを矢印キーで上下左右に5ピクセルずつ移動できます。
スクリプト001■矢印キーでMovieClipを移動
// MovieClip: 矢印キーで移動するインスタンス
// 第1フレームアクション
// 移動量の初期値設定
var nStep:Number = 5;
// キーリスナーオブジェクトの作成
var oKeyListener:Object = new Object();
Key.addListener(oKeyListener);
// キーの押し下げに対するイベントハンドラメソッドの設定
oKeyListener.onKeyDown = function() {
var nKey:Number = Key.getCode();
switch (nKey) {
case Key.UP :
_y -= nStep;
break;
case Key.DOWN :
_y += nStep;
break;
case Key.LEFT :
_x -= nStep;
break;
case Key.RIGHT :
_x += nStep;
break;
}
};
|
Player
Flash Player 5以降。
参考
Flash MX 2004 ActionScript Language Reference: switch
_____
作成者: 野中文雄
作成日: 2005年9月13日