flex actionscript Class类 与loader swf文件
? 注意 Class继承自object,?class是动态生成的,自动使用prototype方式,在原型中会包括整个它所在的类的声明。
赋值给一个class类型的变量相当于得到这个类型的定义
小写 的class是关键词,大写的Class是编译器生成的一个类
为程序中的每个类定义创建一个 Class 对象。每个 Class 对象都是 Class 类的一个实例。Class 对象包含该类的静态属性和方法。在使用?new ?运算符进行调用时,Class 对象会创建该类的实例。有些方法(如? 该类名称是对 Class 对象的引用,如下例所示: class Foo { }
使用? 一个类的任何静态属性和方法都存在于该类的 Class 对象上。Class 自己声明? 一般来讲,不需要手动声明或创建 Class 类型的变量。但是,在以下代码中,一个类被赋予公共 Class 属性? 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 文件资源的方法。(其它技术包括使用 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 中,这些资源通过?
示例
Class.1.as
下例演示如何通过下列步骤使用 Class 对象推迟有关实例化哪种类的决定,直到运行时为止:
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 { } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |