如何优化模块化Flash应用程序(加载时间和灵活性)?

时间:2010-01-26 23:30:56

标签: flash actionscript-3 optimization module

我正在研究一个分解成许多独立swfs的大型应用程序。有一个主swf加载导航shell和基础逻辑,以及一个模块加载系统,将子swfs加载到主显示区域。这一切都很顺利,现在我正在构建模块,我开始觉得我的方法不如它们应该有效。

模块swfs(和相应的闪存)位于主项目的src文件夹的“modules”子目录中。这些模块共享大量类。事实上,大多数人都没有定义特定于该模块的新类。共享类具有复杂的继承和接口使用结构,并且位于主src文件夹的view / structure子目录中。

目前,为了在我的模块swfs中使用view / structure中的共享类,我将主项目的src文件夹添加到每个模块flash中的源路径中。除了每次都有点乏味之外,它还是1.)将共享类冗余地编译到每个模块中,增加了整个板的文件大小,2)需要为每个想要工作的开发人员添加新的源模块源路径/测试应用程序,因为它们是绝对值,并且在每个操作系统的文件系统上都不同,以及3.)不允许在不访问主项目src文件夹的情况下独立构建模块

我对闪存中的RSL进行了一些研究,但我不太清楚我是如何将它们纳入这个方案的。

有什么想法吗?非常感谢您的阅读。

-Dane

1 个答案:

答案 0 :(得分:2)

在这种情况下,我强烈建议使用运行时共享库​​。我从来没有直接从Flash IDE做过,因为我总是通过Flex进行编译,但我想它应该与Flash IDE的逻辑几乎相同,但是你可能不得不稍微调整以下解决方案,因为我正在编写它从头到尾,没有测试过......

通过在代码中以某种方式引用它们来包含要在主shell中共享的所有主类(编译器包含惰性方式的类,并且不会包含和导出非引用的类)。

为确保共享类的一致性,请发布已使用类的SWC(在发布设置中勾选“导出SWC”)。您只需通过解压缩即可仔细检查SWC的内容。

在已加载的模块中,从“源路径”/“库路径”中删除类路径。而是将新创建的SWC添加到“外部库路径”列表中。 当您现在导出模块时,SWC中的类将不会包含在SWF中。

注意:从主SWF外部导出/运行模块时,可能会遇到运行时错误(“未找到定义...”)。这是有道理的,因为您删除的定义意味着来自主SWF。