当前位置: 首页 > 图文教程 > Flash动画 > ActionScript > ActionScript3.0中类的定义以及类属性

ActionScript
Flash as与影片剪辑的调用
Flash AS2教程:缓冲运动
flash as2的缓动类
FLASH AS教程:ActionScript3简介
Flash AS3教程:编程基础
ActionScript和网页JavaScript互相调用
Flash ActinScript 3.0基础知识
ActionScript 3.0的流程控制语法
ActinScript3.0开发基础知识:可重用代码
Flash自定义函数实例
ActoinScript教程:小数坐标处理
AS教程:鼠标拖拽与旋转MC
Flash AS3基础教程:掌握鼠标事件应用
Flash AS3教程:快速制作烟雾动画
Flash AS代码书写约定和书写习惯
学习Flex:常见的Flex代码
Flex教程:ScriptLimits标签
Flash AS教程:propertydata问题解决
Flash AS3单列模式实现方式
as3中通过ByteArray进行对象的深度拷贝

ActionScript3.0中类的定义以及类属性


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 187 ::
收藏到网摘: n/a

类定义

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(默认)

对当前包内的引用可见。

public

对所有位置的引用可见。

使用 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");
}
// output when class is created
hola
class created

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

class StaticTest
{ static var message:String = "static variable"; var message:String = "instance variable";
}
// In your script
var myST:StaticTest = new StaticTest();
trace(StaticTest.message); // output: static variable
trace(myST.message); // output: instance variable