3

我在 Windows 应用程序的 UI 中使用 Flex 3(Flash 播放器作为嵌入式 ActiveX 控件),并使用 ExternalInterface 在它们之间传递数据(主要是进入 Flex 应用程序,而不是输出)。但是,我发现性能非常糟糕,尤其是对于较大的(即自定义)对象。我们进行的 EI 调用越多,传入的自定义对象越大,在性能方面似乎就越难下降。

我假设序列化这些对象有很多开销,所以我想知道,是否有任何最佳实践可以以这种特殊方式使用 ExternalInterface?关于这个主题的文档似乎还没有太多。

例如,将一大块 XML 作为字符串传递到播放器控件,并使用 Flex 解析它,而不是按照规则将其作为自定义对象传递是否更好?需要与其宿主应用程序相对紧密集成的 Flex 应用程序应如何在不牺牲性能的情况下最好地使用 ExternalInterface?EI 性能是 Adob​​e 正在解决的问题吗?播放器 9 和 10 之间的实现有何不同?为了充分利用此功能,我们应该避免哪些事情?

提前致谢!

克里斯

4

2 回答 2

4

只是为了与任何可能感兴趣的人分享答案,Adobe 的非官方答案(在上个月的 MAX 会议上由一些 Adob​​e 工程师确认)是,通过 ExternalInterface 封送超过 30KB 左右的数据将导致性能下降. 少量数据,没问题——但更大的块,无论类型如何,等等,都会大大减慢速度。

显然这是一个已知问题,不幸的是,Flash 10 似乎并没有提供太多改进。因此,与此同时,一个可行的解决方案是使用 ExternalInterface 处理小事,而将繁重的工作留给 URLLoader 和 XML 或 JSON 解析器。希望对您有所帮助——如果有人遇到此问题并需要更详细的指导,请随时直接与我联系。

于 2008-12-10T14:03:17.100 回答
4

布拉德纽伯格似乎付出了很多努力来解决这个问题。他在

http://codinginparadise.org/weblog/2006/02/how-to-speed-up-flash-8s.html

于 2009-06-02T13:40:53.223 回答