Flex应用程序的最佳HTML / JavaScript框架是什么?

时间:2009-10-23 13:35:17

标签: javascript flex flash

我们目前正在使用带有shell.swf的PureMVC框架构建Flex应用程序,该程序可动态加载/卸载模块。我们遇到了内存问题,我们正在寻找用基于JavaScript的加载器替换shell.swf。

两个问题:

  1. 动态加载Flex组件并允许模块相互通信的好框架是什么?

  2. 通过JavaScript动态加载/卸载模块会处理与Flex / Flash应用程序相关的典型内存问题吗?

1 个答案:

答案 0 :(得分:3)

如果您需要页面上的单独Flash元素相互通信,您可能最终会使用LocalConnection。话虽这么说,您需要考虑使用运行时共享库​​(RSL)来构建Flex框架 - 否则每个SWF都必须包含它自己的Flex框架副本。

现在,正如所说的那样,与内存相关的问题并非真正源于框架,而是来自与对象引用相关的问题以及可能的CPU占用问题。

Flash的垃圾收集器只在有时间运行时运行,所以如果你的应用程序相当频繁地加入CPU,GC可能永远不会运行。如果您使用Flex在调试模式下运行应用程序,则可以强制GC运行以查看是否是这种情况。

Flash的GC基于标记和扫描概念。首先标记存在但没有任何引用的对象,然后再扫描出来的错误。这意味着如果你留下对“死”对象的引用,它们永远不会被释放。其中一个常见的罪魁祸首是事件和事件监听器。使用addEventListener始终使用弱键(避免使用GC计算的引用)通常是最佳做法。

// don't do this
foo.addEventListener(Event.CHANGE, onChange);

// do this
foo.addEventListener(Event.CHANGE, onChange, false, 0, true);

格兰特斯金纳有一个excellent series on resource management in AS3你应该退房。