使用 switch 语句

switch 语句创建 ActionScript 语句的分支结构。与 if 语句类似,switch 语句测试一个条件,并在条件返回 true 值时执行一些语句。

在使用 switch 语句时,break 语句指示 Flash 跳过此 case 块中其余的语句,并跳到位于包含它的 switch 语句后面的第一个语句。如果 case 块不包含 break 语句,就会出现一种被称为"落空"的情况。在这种情况下,接下来的 case 语句也会执行,直到遇到 break 语句或 switch 语句结束才停止。下例中演示了这种行为,其中第一个 case 语句不包含 break 语句,因此前两个 case(A 和 B)的代码块都会执行。

所有 switch 语句都应包含一个 default case。default case 应该始终为 switch 语句中的最后一个 case,而且应包含一个 break 语句来避免添加其它 case 时出现落空错误。例如,如果下例中的条件的计算结果均为 A,则 case A 和 B 的语句都会执行,因为 case A 缺少 break 语句。当一个 case 落空时,它没有 break 语句,但在 break 语句的位置会有一个注释,您在下例中 case A 的后面会看到这样一个注释。在编写 switch 语句时,请使用以下格式:

switch (condition) {
case A :
  // 语句
  // 落空
case B :
  // 语句
  break;
case Z :
  // 语句
  break;
default :
  // 语句
  break;
}

在文档中使用 switch 语句:

  1. 选择"文件">"新建",然后选择"Flash 文档"。
  2. 选择时间轴上的第 1 帧,然后在"动作"面板中键入下面的 ActionScript:
    var listenerObj:Object = new Object();
    listenerObj.onKeyDown = function() {
        // 使用 String.fromCharCode() 方法返回一个字符串。
        switch (String.fromCharCode(Key.getAscii())) {
        case "A" :
            trace("you pressed A");
            break;
        case "a" :
            trace("you pressed a");
            break;
        case "E" :
        case "e" :
            /* E doesn't have a break statement, so this block executes if you press e or E. */
            trace("you pressed E or e");
            break;
        case "I" :
        case "i" :
            trace("you pressed I or i");
            break;
        default :
            /* If the key pressed isn't caught by any of the above cases, execute the default case here. */
            trace("you pressed some other key");
        }
    };
    Key.addListener(listenerObj);
    
  3. 选择"控制">"测试影片"对 ActionScript 进行测试。

    使用键盘键入字母,包括 a、e 和 i。当按下这三个键时,您将看到以上 ActionScript 中的 trace 语句。此行代码创建了一个新的对象,用作 Key 类的监听器。当用户按下一个键时,可以使用此对象通知 onKeyDown() 事件。Key.getAscii() 返回用户按下或释放的最后一个键的 ASCII 码,因此需要使用 String.fromCharCode() 方法在参数中返回包含该 ASCII 值代表的字符的字符串。因为"E"没有 break 语句,所以如果用户按下 eE,该代码块就会执行。如果用户所按的键未被前三个 case 中任一个所捕获,则会执行 default case。