サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

switchステートメント

ID: FN0509003 Product: Flash

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日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.