代码之家  ›  专栏  ›  技术社区  ›  Dane

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

  •  3
  • Dane  · 技术社区  · 16 年前

    我正在开发一个大型应用程序,它被分解成许多独立的主权财富基金。有一个加载导航外壳和基本逻辑的主swf,以及一个将子swf加载到主显示区域的模块加载系统。这一切都很顺利,现在我正在构建模块,我开始觉得我的方法并不像它们应该的那样有效。

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

    目前,为了在我的模块SWF中使用view/structure中的共享类,我将主项目的src文件夹添加到每个模块FLA中的源路径中。除了每次都有点繁琐之外,它1.)冗余地将共享类编译到每个模块中,从而全面增加文件大小,2.)需要为每个希望处理/测试应用程序的开发人员的模块添加新的源路径,因为它们是绝对值,在每个操作系统的文件系统上都不同,不允许在没有访问主项目src文件夹的情况下独立构建模块

    我在flash中对RSL做了一些研究,但我不太明白如何将它们应用到这个方案中。

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

    -丹麦人

    1 回复  |  直到 16 年前
        1
  •  2
  •   Theo.T    16 年前

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

    通过在其代码中以某种方式引用要在主shell中共享的所有主类(编译器以惰性方式包含类,未引用的类将不会被包含和导出)。

    为确保共享类的一致性,发布所用类的SWC(在发布设置中勾选“导出SWC”)。只需解压缩SWC的内容,就可以对其进行双重检查。

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