大括号

使用大括号 ({}) 可以将 ActionScript 事件、类定义和函数组合成块。可以将左大括号与声明放在同一行中。

注意

也可以将左大括号放在声明下边的一行。编码约定建议将左大括号放在同一行中以保持一致性。有关大括号和编码约定的信息,请参阅"ActionScript 2.0 的最佳做法和编码约定"

在构成控制结构的每个语句前后添加大括号(例如 if..elsefor),即使该控制结构只包含一个语句。此良好做法可帮助您避免因忘记给代码添加大括号而导致 ActionScript 出现错误。下例显示使用拙劣的形式编写的代码:

var numUsers:Number;
if (numUsers == 0)
  trace("no users found.");

尽管此代码有效,但仍然会被视为形式拙劣,因为语句前后不存在大括号。

提示

单击"自动套用格式"按钮,大括号将添加到该语句中。

在此情况下,如果在 trace 语句后添加另一个语句,则无论 numUsers 变量是否等于 0,另一个语句都会执行,这会导致意想不到的结果。因此,请添加大括号,使代码看起来如下例所示:

var numUsers:Number;
if (numUsers == 0) {
  trace("no users found");
}

在下例中,将创建一个事件侦听器对象和一个 MovieClipLoader 实例。

var imgUrl:String = "http://www.helpexamples.com/flash/images/image1.jpg";
this.createEmptyMovieClip("img_mc", 100);
var mclListener:Object = new Object();
mclListener.onLoadStart = function() {
    trace("starting");
};
mclListener.onLoadInit = function(target_mc:MovieClip):Void {
    trace("success");
};
mclListener.onLoadError = function(target_mc:MovieClip):Void {
    trace("failure");
};
var myClipl:MovieClipLoader = new MovieClipLoader();
myClipl.addListener(mclListener);
myClipl.loadClip(imgUrl, img_mc);

下一个示例显示了可用于创建 Student 对象的简单的类文件。可以在"类"中学习关于类文件的更多知识。

在 ActionScript 文件中使用大括号:

  1. 选择"文件">"新建",然后选择"ActionScript 文件"。
  2. 选择"文件">"另存为",将此新文档另存为 Student.as
  3. 将以下 ActionScript 添加到该 AS 文件中。
    // Student.as
    class Student {
        private var _id:String;
        private var _firstName:String;
        private var _middleName:String;
        private var _lastName:String;
    
        public function Student(id:String, firstName:String, middleName:String, lastName:String) {
            this._id = id;
            this._firstName = firstName;
            this._middleName = middleName;
            this._lastName = lastName;
        }
        public function get firstName():String {
            return this._firstName;
        }
        public function set firstName(value:String):Void {
            this._firstName = value;
        }
        // ...
    }
    
  4. 保存该类文件。
  5. 选择"文件">"新建",然后单击"Flash 文档"创建一个新的 FLA 文件。
  6. 将该新的 FLA 文件另存为 student_test.fla
  7. 在主时间轴的第 1 帧上键入下面的 ActionScript:
    // student_test.fla
    import Student;
    var firstStudent:Student = new Student("cst94121", "John", "H.", "Doe");
    trace(firstStudent.firstName); // John
    firstStudent.firstName = "Craig";
    trace(firstStudent.firstName); // Craig
    
  8. 选择"文件">"保存"以保存对 student_test.fla 所做的更改。
  9. 选择"控制">"测试影片"对 FLA 和 AS 文件进行测试。

下一个示例演示了使用函数时如何使用大括号。

将大括号用于函数:

  1. 选择"文件">"新建",然后选择"Flash 文档"创建一个新的 FLA 文件。
  2. 选择"文件">"另存为",将此新文件命名为 checkform.fla
  3. 将 Label 组件的实例从"组件"面板拖到舞台上。
  4. 打开"属性"检查器("窗口">"属性">"属性"),选择该 Label 组件实例,然后在"实例名称"文本框中键入实例名称 status_lbl
  5. 在 W(宽度)文本框中键入 200 将该组件的大小调整为 200 像素宽。
  6. 将 TextInput 组件的实例拖到舞台上,然后为它指定实例名称 firstName_ti
  7. 将 Button 组件的实例拖到舞台上,然后为它指定实例名称 submit_button
  8. 选择时间轴中的第 1 帧,在"动作"面板中,添加下面的 ActionScript:
    function checkForm():Boolean {
        status_lbl.text = "";
        if (firstName_ti.text.length == 0) {
            status_lbl.text = "Please enter a first name.";
            return false;
        }
        return true;
    }
    function clickListener(evt_obj:Object):Void {
        var success:Boolean = checkForm();
    };
    submit_button.addEventListener("click", clickListener);
    
  9. 选择"文件">"保存"以保存该 Flash 文档。
  10. 选择"控制">"测试影片",在创作环境中对代码进行测试。

    在 SWF 文件中,如果在 firstName_ti TextInput 组件中没有加入文本时就单击舞台上的 Button 实例,就会显示一条错误消息。该错误消息出现在 Label 组件中,告知用户他们需要输入名字。

下一个示例使用大括号显示了如何在对象内创建和定义属性。在此例中,属性在对象中是通过在大括号 ({}) 标点符号中指定变量名称来定义的:

var myObject:Object = {id:"cst94121", firstName:"John", middleName:"H.", lastName:"Doe"};
var i:String;
for (i in myObject) {
    trace(i + ": " + myObject[i]);
}
/*
    ID:cst94121
    名字:John
    中间名:H.
    姓氏:Doe
*/

还可以使用空的大括号对作为 new Object() 函数的语法快捷方式。例如,以下代码将创建一个空的 Object 实例:

var myObject:Object = {};

提示

记住一定让每个左大括号都有和它配对的右大括号。