Flash Player 6。
dynamic classclassName
[ extendssuperClass
][ implements
interfaceName
[,interfaceName
... ] ] { // 此处是类定义 }
注意:若要使用此关键字,必须在 FLA 文件的“发布设置”对话框的“Flash”选项卡上指定“动作脚
本 2.0”和“Flash Player 6”或更高版本。仅支持在外部脚本文件中使用此关键字,而不支持在用“动作”面板编写的脚本中使用此关键字。
关键字;指定基于指定的类的对象可以在运行时添加和访问动态属性。
对于动态类的类型检查与对于非动态类的类型检查相比更为宽松,因为在类定义内访问的成员和在类实例上访问的成员不与在类范围内定义的那些成员进行比较。但是,仍可能对类成员函数进行类型检查,以确定返回类型和参数类型。当处理 MovieClip 对象时,此行为特别有用,因为这种情况下可以通过多种不同的方法动态地将属性和对象添加到影片剪辑,如MovieClip.createEmptyMovieClip()
和 MovieClip.createTextField()
。
动态类的子类也是动态的。
有关更多信息,请参见创建动态类。
在以下示例中,类 B 已标记为动态的,因此对它调用某个未声明的函数将不会在编译时引发错误。
// 在 B.as 中 dynamic class B extends class_A { function B() { /*this is the constructor*/ } function m():Number {return 25;} function o(s:String):Void {trace(s);} } // 在 C.as 中 class C extends class_A { function C() { /*this is the constructor*/ } function m():Number {return 25;} function o(s:String):Void {trace(s);} } // 在其它脚本中 var var1 = B.n(); // 无错误 var var2 = C.n() // 错误,因为在 C.as 中没有函数 n