0

我有一个只包含库资产的 swf,没有代码。它由另一个具有代码的 swf 加载。

库 swf 有大约 280 个符号,它们为 AS3 导出。一切正常,直到我制作一个包含 TLFTextField 的新影片剪辑,而不是 TextField。当我构建 swf 时,没有警告或错误,但在运行时,我无法从库 swf 加载任何资产。hasDefinition 总是为每个资产返回 false。

我把 swf 给了一个同事,他用 010 Editor 查看了 swf 中的所有定义,他说里面没有符号。我删除了 TLFTextField,重建了 swf,然后又给了他。他说现在它有280个符号。

不知何故,制作 TLFTextfield 和编译会搞砸 swf 中的每个符号,即使在编译时没有收到警告或错误。关于它为什么这样做的任何想法?顺便说一句,我正在使用 CS5。

4

1 回答 1

0

默认情况下,textLayout.swc(由 TLFTextField 使用)导出为 RSL(到单独的 SWZ 文件中),并且您的 SWF 会添加一个预加载器 SWF 存根,该存根负责加载该 SWZ 文件。

不知道如何添加预加载器,但如果我使用 Flashdevelop 检查 SWF,我只会看到来自预加载器的符号。不是我为动作脚本导出的符号,我假设主 SWF 已添加到预加载器存根并由预加载器以某种方式加载。

您必须转到 Publish Settings -> Action Script 3.0 settings -> Library 选项卡 -> 选择 textLayout.swc 并在底部将 Default Linkage 更改为“Merged into code”。这希望能解决你的问题。

于 2011-11-05T19:45:43.767 回答