2010-01-26 50 views
3

我正在研究分解成许多独立的swfs的大型应用程序。有一个加载导航外壳和基础逻辑的主swf,以及一个将子swfs加载到主显示区域的模块加载系统。这一切都运行顺利,现在我正在构建模块,并且我开始觉得我的方法不像应该那样高效。如何优化模块化Flash应用程序(加载时间和灵活性)?

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

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

我对RSL中的一些闪光灯,但我不明白我将如何适应他们到这个计划。

任何想法?非常感谢您的阅读。

-Dane

+0

听起来很复杂。我想知道,如果你有你的主要模块类(抽象模块的类别其他所有东西继承或实现方法),它会适合你编译为一个SWC并使用它的样子吗?每次你编译时,只有新的代码应该被编译,因为swc已经被编译过了。这将是1)。... 2)每个开发者更新它的swc,在libs文件夹中可能是相对路径。 3.)如果他们被迫实现和接口,或者扩展一个在保护方法中需要最少实现的类,应该没问题。 – 2010-01-26 23:55:47

+0

SWF始终尝试尽可能独立。即使没有复杂的依赖关系,项目集合中的每个项目也会趋于膨胀。 RSL是答案,见Theo的解释。 – Ipsquiggle 2010-01-27 16:32:18

回答

2

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

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

为确保共享类的一致性,请发布所使用类的SWC(在发布设置中勾选“导出SWC”)。您可以随时通过解压缩SWC的内容。

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

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

+0

+1 ..在我看来,Dane所描述的情景恰恰就是RSL有价值的情况。 – Ipsquiggle 2010-01-27 16:30:03

+0

谢谢,这听起来像我正在寻找的答案。 – Dane 2010-01-27 17:33:59