指定数据类型

只要定义变量,就需要指定数据类型 ― 无论是使用 var 关键字声明变量,创建函数参数,设置函数返回类型,还是定义在 forfor..in 循环中使用的变量。要指定数据类型,请使用后冒号语法,这意味着变量名后面需要跟一个冒号,然后是数据类型:

var my_mc:MovieClip;

有多种可能的数据类型,包括本机数据类型(如 Number、String、Boolean)或 Flash Player 8 中包括的内置类(如 BitmapData、FileReference),甚至还有您或其他开发人员编写的自定义类。需要指定的最常见的数据类型是内置数据类型,例如,Number、String、Boolean、Array 或 Object。下面的代码示例中显示了这些数据类型。

要为某个项目指定特定的数据类型,请使用 var 关键字和后冒号语法指定其类型,如下例所示:

// 严格指定变量或对象的类型
var myNum:Number = 7;
var birthday:Date = new Date();

// 严格指定参数的类型
function welcome(firstName:String, age:Number) {
}

// 严格指定参数和返回值的类型
function square(myNum:Number):Number {
  var squared:Number = myNum * myNum;
  return squared;
}

您可以根据内置类(Button、Date 等)以及您创建的类和接口来声明对象的数据类型。在下例中,如果您在一个名为 Student.as 的文件中定义了 Student 类,则可以指定您创建的对象属于类型 Student:

var myStudent:Student = new Student();

对于此示例,假设您键入以下代码:

// 在 Student.as 类文件中
class Student {
  public var status:Boolean; // Student 对象的属性
}
// 在 FLA 文件中
var studentMaryLago:Student = new Student();
studentMaryLago.status = "enrolled"; /* 赋值语句中类型不匹配: 找到的是 String,但需要的是 Boolean。 */

当 Flash 编译此脚本时,会生成"类型不匹配"错误,因为该 SWF 文件需要布尔值。

如果要编写一个没有返回类型的函数,可以将该函数的返回类型指定为 Void。或者,如果要创建到函数的快捷方式,可以将 Function 数据类型指定给新的变量。要指定对象类型为 Function 或 Void,请参阅下例:

function sayHello(name_str:String):Void {
    trace("Hello, " + name_str);
}
sayHello("world"); // Hello, world
var greeting:Function = sayHello;
greeting("Augustus"); // Hello, Augustus

严格数据类型指定的另一个优点是,对于严格指定类型的内置对象,Flash 会自动显示代码提示。有关详细信息,请参阅关于指定数据类型和严格数据类型指定

使用 ActionScript 1.0 发布的文件在编译时不考虑严格数据类型的指定,因此为严格指定了类型的变量分配类型错误的值时,不会生成编译器错误。

var myNum:String = "abc";
myNum = 12;
/* 在 ActionScript 1.0 中不会出现任何错误,但是在 ActionScript 2.0 中会出现类型不匹配错误 */

其原因是,以 ActionScript 1.0 发布文件时,Flash 以斜杠语法(而不是严格类型指定)解释像 var myNum:String = "abc" 这样的语句。(ActionScript 2.0 不支持斜杠语法。)这可能会造成将对象分配给类型错误的变量,导致编译器允许非法的方法调用和未定义的属性引用直接通过,而不报告错误。

使用 ActionScript 2.0 发布的文件可以根据需要使用数据类型指定。因此,如果在代码中执行严格数据类型指定,请确保"发布设置"设置为 ActionScript 2.0。可以使用以下方法指定"发布设置"和定义要用于发布文件的 ActionScript 版本:从主菜单中修改发布设置("文件">"发布设置"),或单击"属性"检查器中的"设置"按钮(确保没有选中任何实例)。要使用特定版本的 ActionScript 或 Flash Player,请在"发布设置"对话框中选择"Flash"选项卡,并从"ActionScript 版本"弹出菜单中做出一项选择。

有关类型检查的信息,请参阅关于类型检查