类定义

ActionScript 3.0 类定义使用的语法与 ActionScript 2.0 类定义使用的语法相似。正确的类定义语法中要求 class 关键字后跟类名。类体要放在大括号 ({}) 内,且放在类名后面。例如,以下代码创建了名为 Shape 的类,其中包含名为 visible 的变量:

public class Shape
{
    var visible:Boolean = true;
}

对于包中的类定义,有一项重要的语法更改。在 ActionScript 2.0 中,如果类在包中,则在类声明中必须包含包名称。在 ActionScript 3.0 中,引入了 package 语句,包名称必须包含在包声明中,而不是包含在类声明中。例如,以下类声明说明如何在 ActionScript 2.0 和 ActionScript 3.0 中定义 BitmapData 类(该类是 flash.display 包的一部分):

// ActionScript 2.0
class flash.display.BitmapData {}

// ActionScript 3.0
package flash.display
{
    public class BitmapData {}
}

子主题

类属性
类体

类属性

在 ActionScript 3.0 中,可使用以下四个属性之一来修改类定义:

属性

定义

dynamic

允许在运行时向实例添加属性。

final

不得由其它类扩展。

internal(默认)

对当前包内的引用可见。

公共

对所有位置的引用可见。

使用 internal 以外的每个属性时,必须显式包含该属性才能获得相关的行为。例如,如果定义类时未包含 dynamic 属性 (attribute),则不能在运行时向类实例中添加属性 (property)。通过在类定义的开始处放置属性,可显式地分配属性,如下面的代码所示:

dynamic class Shape {}

请注意,列表中未包含名为 abstract 的属性。这是因为 ActionScript 3.0 不支持抽象类。同时还请注意,列表中未包含名为 privateprotected 的属性。这些属性只在类定义中有意义,但不可以应用于类本身。如果不希望某个类在包以外公开可见,请将该类放在包中,并用 internal 属性标记该类。或者,可以省略 internalpublic 这两个属性,编译器会自动为您添加 internal 属性。如果不希望某个类在定义该类的源文件以外可见,请将类放在包定义右大括号下面的源文件底部。

类体

类体放在大括号内,用于定义类的变量、常量和方法。下面的示例显示 Adobe Flash Player API 中 Accessibility 类的声明:

public final class Accessibility
{
    public static function get active():Boolean;
    public static function updateProperties():void;
}

还可以在类体中定义命名空间。下面的示例说明如何在类体中定义命名空间,以及如何在该类中将命名空间用作方法的属性:

public class SampleClass
{
    public namespace sampleNamespace;
    sampleNamespace function doSomething():void;
}

ActionScript 3.0 不但允许在类体中包括定义,而且还允许包括语句。如果语句在类体中但在方法定义之外,这些语句只在第一次遇到类定义并且创建了相关的类对象时执行一次。下面的示例包括一个对 hello() 外部函数的调用和一个 trace 语句,该语句在定义类时输出确认消息:

function hello():String
{
    trace("hola");
}
class SampleClass
{
    hello();
    trace("class created");
}
// 创建类时输出
hola
class created

与以前版本的 ActionScript 相比,ActionScript 3.0 中允许在同一类体中定义同名的静态属性和实例属性。例如,下面的代码声明一个名为 message 的静态变量和一个同名的实例变量:

class StaticTest
{
    static var message:String = "static variable";
    var message:String = "instance variable";
}
// 在脚本中
var myST:StaticTest = new StaticTest();
trace(StaticTest.message); // 输出:静态变量
trace(myST.message);       // 输出:实例变量

Flash CS3

 

评论添加到页面后给我发送电子邮件 | 评论报告

当前页: http://livedocs.adobe.com/flash/9.0_cn/main/00000061.html