3

私は Windows アプリの UI で Flex 3 を使用しており (埋め込み ActiveX コントロールとして Flash プレーヤー)、ExternalInterface を使用してそれらの間でデータを渡しています (アウトではなく、主に Flex アプリに)。ただし、特に大きな (つまり、カスタム) オブジェクトでは、パフォーマンスがかなり悪いことがわかりました。EI 呼び出しが多くなり、渡されるカスタム オブジェクトが大きくなるほど、パフォーマンスが低下しにくくなります。

これらのオブジェクトのシリアル化にはかなりのオーバーヘッドがあると想定しているので、この特定の方法で ExternalInterface を使用するためのベスト プラクティスはあるのでしょうか? このテーマに関するドキュメントに関しては、まだあまり出回っていないようです。

たとえば、XML の大きなブロックをプレーヤ コントロールに文字列として渡し、それを Flex で解析する方が、原則としてカスタム オブジェクトとして渡すよりもよいでしょうか? ホスト アプリとの比較的緊密な統合を必要とする Flex アプリは、パフォーマンスを犠牲にすることなく ExternalInterface を最適に使用するにはどうすればよいでしょうか? EI パフォーマンスはアドビが対処している問題ですか? プレーヤー 9 と 10 の間で実装上の違いはありますか? この機能を最大限に活用するには、どのようなことを避ける必要がありますか?

前もって感謝します!

クリス

4

2 に答える 2

4

興味があるかもしれない人と答えを共有するために、Adobeからの非公式の答え(先月のMAXカンファレンスで数人のAdobeエンジニアによって確認された)は、たとえば、ExternalInterfaceを介して30KB以上のデータをマーシャリングするとパフォーマンスが低下するというものです。少しのデータでも問題ありませんが、タイプなどに関係なく、チャンクが大きくなると、処理速度が大幅に低下します。

どうやらこれは既知の問題であり、残念ながらFlash10は改善の点であまり効果がないようです。そのため、当面の間、実行可能な解決策は、ささいなことにExternalInterfaceを使用することですが、URLLoaderとXMLまたはJSONパーサーに負担をかけることを任せます。お役に立てば幸いです。誰かがこれに遭遇し、より詳細なガイダンスが必要な場合は、直接私に連絡してください。

于 2008-12-10T14:03:17.100 に答える
4

Brad Neuberg は、これを解明するために多大な努力を払ったようです。彼は回避策を公開しています

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

于 2009-06-02T13:40:53.223 に答える