包 | 顶级 |
类 | public dynamic class Class |
继承 | Class Object |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
new
运算符进行调用时,Class 对象会创建该类的实例。
有些方法(如 flash.net.getClassByAlias()
)返回 Class 类型的对象。其他方法可能返回 Class 类型的参数,例如 flash.net.registerClassAlias()
。
该类名称是对 Class 对象的引用,如下例所示:
class Foo { }
class Foo{}
语句是创建 Class 对象 Foo 的类定义。此外,语句 new Foo()
还将创建类 Foo 的一个新实例,其结果为 Foo 类型。
使用 class
语句声明所需类。Class 对象对于高级技术(例如在运行时将类赋值给现有实例对象)很有用,如以下“示例”部分所示。
一个类的任何静态属性和方法都存在于该类的 Class 对象上。Class 自己声明 prototype
。
一般来讲,不需要手动声明或创建 Class 类型的变量。但是,在以下代码中,一个类被赋予公共 Class 属性 circleClass
,同时可以将该 Class 属性作为主 Library 类的一个属性加以引用:
package { import flash.display.Sprite; public class Library extends Sprite { public var circleClass:Class = Circle; public function Library() { } } } import flash.display.Shape; class Circle extends Shape { public function Circle(color:uint = 0xFFCC00, radius:Number = 10) { graphics.beginFill(color); graphics.drawCircle(radius, radius, radius); } }
另一个 SWF 文件可以加载生成的 Library.swf 文件,然后实例化 Circle 类型的对象。下面的示例演示一种可以访问子 SWF 文件资源的方法。(其他技术包括使用 flash.utils.getDefnitionByName()
或导入子 SWF 文件的存根定义。)
package { import flash.display.Sprite; import flash.display.Shape; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; public class LibaryLoader extends Sprite { public function LibaryLoader() { var ldr:Loader = new Loader(); var urlReq:URLRequest = new URLRequest("Library.swf"); ldr.load(urlReq); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); } private function loaded(event:Event):void { var library:Object = event.target.content; var circle:Shape = new library.circleClass(); addChild(circle); } } }
在 ActionScript 3.0 中,可以为编译到 SWF 文件中的外部资源(如图像、声音或字体)创建嵌入类。在较早版本的 ActionScript 中,这些资源通过 MovieClip.attachMovie()
方法使用链接 ID 关联。在 ActionScript 3.0 中,每个嵌入资源由一个唯一的嵌入资源类表示。因此,可以使用 new
运算符实例化资源的关联类,并调用该资源上的方法和属性。
相关 API 元素
- 声明两个类为
ClassA
和ClassB
。 - 声明一个 Class 类型变量,名为
classToConstruct
,以及一个 Boolean 类型chooseClassA
(在本例中设置为true
),但您的代码可以使用自定义测试表达式来设置该变量的值。
package { import flash.display.Sprite; public class ClassExample extends Sprite { public function ClassExample() { var classToConstruct:Class; var classInstance:Object; classToConstruct = ClassA; classInstance = new classToConstruct(); trace(classInstance); // [object ClassA] classToConstruct = ClassB; classInstance = new classToConstruct(); trace(classInstance); // [object ClassB] } } } class ClassA { } class ClassB { }
Tue Jun 12 2018, 11:04 AM Z