3

JBossには、ホストと通信するための2つのオプションがあります。(私の場合、AxInterop.ShockwaveFlashObjects.dllを使用してフラッシュムービーをホストする.NETアプリ)

fscommand(String, ...);

ExternalInterface.call(String, ...);

2つの主な違いは何ですか?

fscommandがホスト側に少し遅れて到着したのでしょうか?(つまり、ブロックされていないため、ExternalInterface呼び出しと混同される可能性がありますか?)

4

2 に答える 2

3

ExternalInterfacefscommandは、 Flashとコンテナアプリケーション間の通信の古い方法(Flash Player 8より前)であったの直接の代替品です( Adobeのドキュメントを参照)。

再びドキュメントから、ExternalInterfaceoverの利点は次のfscommandとおりです。

  • fscommand()関数で使用できる関数だけでなく、任意のJavaScript関数を使用できます。
  • 任意の名前で、任意の数の引数を渡すことができます。コマンドと単一の文字列引数を渡すことに限定されません。これにより、外部APIはfscommand()よりもはるかに柔軟性が高くなります。
  • さまざまなデータ型(ブール値、数値、文字列など)を渡すことができます。文字列パラメータに制限されなくなりました。
  • 呼び出しの値を受け取ることができ、その値はすぐにActionScriptに返されます(呼び出しの戻り値として)。

Flash Player 8以降をターゲットにしている場合は、を使用することをお勧めしますExternalInterface

于 2012-07-09T12:31:53.080 に答える
1

一般的には、fscommandではなくExternalInterfaceを使用することをお勧めします。私はfscommandを多かれ少なかれ非推奨と見なしています。

そうは言っても、ExternalInterface.call()は同期的であるため、fscommandが非ブロッキングであると述べたことは、呼び出された外部関数から値を返すことができるようにするために正しい可能性があります。それがfscommandを支持する状況、エッジケースがあるかもしれないと思いますが、おそらくそれをテストする必要があります。

繰り返しになりますが、ExternalInterfaceをお勧めします。これには、データ型の保持や、ActionScriptと一般的な外部環境(WebページのJavaScript)間のオブジェクトの自動シリアル化/逆シリアル化など、fscommandにはない多くの機能がありますが、fscommandは文字列のみを送信します。.NETアプリでExternalInterfaceを使用すると、XML-RPC(ExternalInterfaceによって内部的に使用される)を自分で解析する必要があるかもしれませんが、よくわかりません。

于 2012-07-09T12:42:28.633 に答える