加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex actionscript Class类 与loader swf文件

发布时间:2020-12-15 04:14:22 所属栏目:百科 来源:网络整理
导读:类 public dynamic class Class 继承 Class? - ? Object ? 注意 Class继承自object,?class是动态生成的,自动使用prototype方式,在原型中会包括整个它所在的类的声明。 赋值给一个class类型的变量相当于得到这个类型的定义 小写 的class是关键词,大写的Cla
public dynamic class Class
继承 Class?->?Object
? 注意 Class继承自object,?class是动态生成的,自动使用prototype方式,在原型中会包括整个它所在的类的声明。
赋值给一个class类型的变量相当于得到这个类型的定义
小写 的class是关键词,大写的Class是编译器生成的一个类
为程序中的每个类定义创建一个 Class 对象。每个 Class 对象都是 Class 类的一个实例。Class 对象包含该类的静态属性和方法。在使用?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?运算符实例化资源的关联类,并调用该资源上的方法和属性。


示例
Class.1.as

下例演示如何通过下列步骤使用 Class 对象推迟有关实例化哪种类的决定,直到运行时为止:
  1. 声明两个类为?ClassA?和?ClassB
  2. 声明一个 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 { }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读