3

哇,我在 Stack Overflow 上的第一篇文章。我“到达”了吗?

好吧,这是一个奇怪的问题。我正在尝试确定是否有某种编程方式可以在运行时自省链接的 SWC 中的类。

为了提供更多背景知识(也许有一种完全不同的方法可以做到这一点),我正在考虑字体嵌入的一般框架。目前,要嵌入字体(使用链接的 SWC,而不是 [embed] 元标记),您需要使用 Flash IDE 将字体嵌入到您的 SWC 中,然后您需要在您的代码(可能由其他人创建,使用不同的 IDE - 例如 FlashDevelop)。

现在,如果可以在运行时自省 SWC 并遍历它公开的类,理论上可以通过编程方式实例化/注册这些字体,而不必(在编译时)知道这些字体可能是什么。

因此,问题是:是否有人知道在运行时将 SWC 作为实体访问并内省其暴露的类的任何方法?


顺便说一句,这种事情的基本原理是对设计和应用程序逻辑职责的清晰分离的简单愿望。设计师可以轻松嵌入字体、作者和 SWC,并编辑相应的外部 CSS 文件。指望他们更新代码中对类的硬引用,或者指望客户端在编译和发布作业后不会改变他们对字体使用的想法,这要危险得多。

4

2 回答 2

1

您可以将文件作为二进制文件加载(或者如果它是主文件,则使用阶段的 LoaderInfo 的 bytes 属性),查看 ABC 数据的“标签”,解析它,然后查找您需要的数据。不过这很麻烦。

有诸如字体标签之类的东西。DefineFont2(标签类型 48)包含 FontID 和 FontName,DefineFontName(标签类型 88)还包含 FontID 和 FontName。也许这就是您需要的数据。如果是这样,那么即使是最大的文件也可以非常快地浏览。

您可以在此处阅读 .swf 文件格式规范:http: //www.adobe.com/devnet/swf.html

于 2010-10-07T17:57:46.067 回答
0

You should look at FLexSpy (fxspy) http://code.google.com/p/fxspy/

There are some others out there that will be helpful, too:

KapInspect: http://lab.kapit.fr/display/kapinspect/Kap+Inspect

DeMonster DeBugger: http://demonsterdebugger.com/

于 2010-10-07T16:47:23.567 回答