我在Windows应用程序的UI中使用Flex 3(Flash播放器作为嵌入式ActiveX控件),并使用ExternalInterface(主要是Flex应用程序,而不是out)在它们之间传递数据。然而,我发现性能非常糟糕,特别是对于较大的(即自定义)对象;我们制作的EI调用次数越多,自定义对象传入的次数越多,性能就越难以下降。
我假设在序列化这些对象时有很多开销,所以我想知道,有没有以这种特殊方式使用ExternalInterface的最佳实践?关于这个问题的文件似乎没有那么多。
比如说,将一大块XML作为字符串传递给播放器控件并使用Flex解析它比将其作为自定义对象传递更好吗? Flex应用程序需要与其主机应用程序进行相对紧密的集成,如何在不牺牲性能的情况下最好地使用ExternalInterface? EI性能是Adobe正在解决的问题吗?球员9和10之间的任何实施差异?我们应避免哪些事情才能充分利用此功能?
提前致谢!
克里斯
答案 0 :(得分:4)
只是为了与可能感兴趣的任何人分享答案,来自Adobe的非官方答案(在上个月的MAX会议上由一些Adobe工程师证实)是,通过ExternalInterface编组超过30KB左右的数据将是导致性能下降。一点点的数据,没有问题 - 但更大的块,无论类型等,都会大大减慢速度。
显然,这是一个众所周知的问题,不幸的是,Flash 10似乎没有提供太多改进。所以在此期间,一个可行的解决方案是使用ExternalInterface来处理小事,但是要将更重的提升留给URLLoader和XML或JSON解析器。希望有所帮助 - 如果有人遇到这个并且需要更详细的指导,请随时直接与我联系。
答案 1 :(得分:4)
http://codinginparadise.org/weblog/2006/02/how-to-speed-up-flash-8s.html