我想知道最简单的方法是使用我自己的自定义代码中的 - 一个完整的AS3继承树和每个类的继承成员:
搜索每个SWC的catalog.xml,然后查找目录中列出的每个相应的类文件,并解析它?
还是其他一些更简单的方式?
换句话说,我需要完全了解AS3继承链(所有核心和自定义类),包括属于可能出现在子类中的超类的公共成员和受保护成员。此信息将插入我正在编写的语言转换器(AS3->其他一些语言)。
我想知道如何。 FlashDevelop或FlashBuilder(Eclipse)就是这样做的。我已经查看了每个.SWC中出现的catalog.xml文件,但是虽然这提供了对继承链的一些了解,但它没有说明IDE如何提取自动完成中使用的继承成员等信息。
这些信息应从哪里提取? ...请记住,FD(例如)是用C#编写的,因此describeType
可能不是一个选项。
答案 0 :(得分:2)
要访问完整的依赖关系图,包括私有和内部API,您必须使用字节码内省 - 解析类(文本)文件不会从.SWC库中生成有关导入类的任何信息。有关ActionScript字节码的详细信息,请查看AVM2 specification。
如果您打算在AS3中工作,可以使用describeType()
在运行时访问任何类的类型信息。但是,它的范围是有限的(仅包括公共成员),并且性能很高,因此您必须实现某种缓存机制,也可能调整XML解析。
如果您想省去麻烦,请查看as3commons-reflect。它提供了上述所有功能,以及非常方便的API。任何时候你都会在奇怪的场合使用反思,我强烈推荐它 - 你会节省很多时间和精力来写别人已写的东西;)。
此外,如果您需要访问私有和内部成员,或者如果您想在运行时操作类,那么as3commons-bytecode可以处理已加载类的实际字节码,并允许各种类型的voodoo和黑魔法。
答案 1 :(得分:0)
我真的希望避免链接到软件,但这个似乎就是你想要的。
除此之外,文档似乎总是很有条理地看到类层次结构。
您还可以获得离线版本... where can I download AS3 flash platform full documentation?