代码之家  ›  专栏  ›  技术社区  ›  artman

如何列出SWF中包含的所有类

  •  4
  • artman  · 技术社区  · 17 年前

    3 回复  |  直到 17 年前
        1
  •  14
  •   colin moock    13 年前

    基本示例:

    var definitions:Vector.<String> = this.loaderInfo.applicationDomain.getQualifiedDefinitionNames();
    

    以下代码演示了如何在Flash Player 11.3中列出.swf文件的所有定义(包括类),在旧版本的Flash Player中显示失败消息:

    var t:TextField;
    t = new TextField();
    t.width = 1200;
    t.height = 700
    t.border = true;
    t.background = true;
    t.text = "Definition List\n";
    t.appendText("========================================\n");
    var definitions:*;
    if (this.loaderInfo.applicationDomain.hasOwnProperty("getQualifiedDefinitionNames")) {
      definitions = this.loaderInfo.applicationDomain["getQualifiedDefinitionNames"]();
      for (var i:int = 0; i < definitions.length; i++) {
        t.appendText(definitions[i] + "\n");
        t.scrollV = t.maxScrollV;
      }
    } else {
      t.appendText("Could not read classes. For a class list, open this .swf "
                   + "file in Flash Player 11.3 or higher. Your current "
                   + "Flash Player version is: " + Capabilities.version);
    }
    addChild(t);
    

    http://www.bytearray.org/?p=175

    http://etcs.ru/blog/as3/getdefinitionnames/

    http://etcs.ru/pre/getDefinitionNamesSource/

        2
  •  1
  •   Markavian    14 年前

    例如。:

    this.availableClasses = ["MainMenuClass", "SmileyFaceClass", "JumpButtonClass"];
    

    var classes:Array = loader.content.availableClasses;
    var domain:ApplicationDomain = loader.loaderInfo.applicationDomain;
    var classType:Class;
    var clip:*;
    for each(var className:String in classes) {
      classType = domain.getDefinition(className);
      clip = new classType();
    }
    
        3
  •  -1
  •   Shvilam    17 年前

    据我所知,这是不可能的