是否可以使用 mxmlc 编译 FLA?

Is it possible to compile a FLA using mxmlc?

首先让我稍微解释一下我想做的事情。我正在研究一种新的基于 AS3 的架构,并且我正在尝试解决我过去使用 AS2 时遇到的一些问题。每个屏幕都有自己的 FLA,多个屏幕引用某些组件;例如 ButtonButton 中的某些内容发生更改时会出现问题。每个使用 Button 的屏幕都必须重新发布,否则它有可能不会接受更改,因为 Flash class 定义的工作方式:第一个 Button 定义在运行时加载是一切都使用的。因此,如果首先加载使用旧 Button 的屏幕,那么所有内容都将使用旧定义,并且一切都会崩溃。可能需要一个小时或更长时间才能确定需要导出哪个 FLA 来修复它,因为数量太多而且它们之间的联系并不总是很明显。正如您所看到的,这是一个需要修复的主要时间槽。

我了解到,在 AS2 中,您可以在发布 FLA 时使用 exclude.xml 文件从 SWF 中排除 class 定义。通过这种方式,我想出了一个我可以设置的架构,其中有一个 Shell SWF,这是唯一定义了 Button class 的地方。 Shell 然后加载所有已排除 Button 的所有其他屏幕,以便它们只选择 Shell 版本。这确保如果 Button 中的任何内容发生更改,唯一需要重新发布的是 Shell,然后其他所有内容都会在运行时获取更改。

一切都很好,只是在使用 AS3 时 exclude.xml 文件不再有效。因此,我转向了 MXMLC,它可以通过在编译 [=15] 时使用 -link-report 编译器选项构建 exclude.xml 来模拟 exclude.xml 功能=] SWF,然后在每个其他屏幕上将 XML 传递给 -load-externs,以排除由 Shell 构建的所有内容。我发现这样做的唯一方法是从 Flash 将所有内容发布为 SWC,然后使用 -include-libraries 从 SWC 构建 SWF 以及 -load-externs 以排除我不想要的所有内容到那里。这样做很好,只是作为 SWC 发布不包括时间轴上定义的任何内容,或者更具体地说,阶段。许多设计工作是在 Flash 的时间轴上完成的,方法是在不同的部分上分层并在所有地方放置命名 MovieClips,然后在 ActionScript 中引用这些信息,但是 SWC 不会获取任何此类信息据我所知。

现在我们来回答我的问题。有没有什么方法可以使用 MXMLC 编译 FLA 中的所有信息,这样我就可以排除所有内容,同时仍然能够设计出 timeline/stage?

中的所有内容

我给 Grant Skinner 发了一封电子邮件,他基本上说他知道使用 AS3 进行排除的唯一方法是使用 RSL 或 SWC。他不完全确定哪种方法有效,因为已经很长时间了,所以我没有明确的答案。我花了一段时间尝试使用 SWC 来解决这个问题,但我并没有真正从中得到任何像样的结果,所以我暂时放弃了。

需要注意的重要部分是 运行 MXMLC 构建 FLA 确实是不可能的。或者至少如果可能的话,它需要非常复杂的知识,但很少有人知道。