当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何列出SWF中包含的所有类》经验,为你挑选了1个好方法。

有没有办法获得当前运行的SWF中包含的所有类的列表?您可以在根上使用describeType,然后遍历列表以查找应用程序中引用的所有实例类,但此方法不适用于已包含但未引用的类(例如,本地引用).



1> 小智..:

从Flash Player 11.3开始,您可以使用ApplicationDomain.getQualifiedDefinitionNames().

基本示例:

var definitions:Vector. = 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);

对于Flash Player 11.2及更早版本中的类列表,必须读取.swf的字节并手动解析类名.这里有两个着名的图书馆,展示了:

Thibault Imbert的SWFExplorer

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

Denis Kolyako的getDefinitionNames()

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

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

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有