6

前の質問よりも抽象的なレベルで、私の経験では、AS3 を使用して埋め込み .swf から HTML ページで JavaScript 関数を呼び出すには、ExternalInterface、fscommand、navigateToURL の 3 つの方法があります。

これらの方法 (およびリストに挙げていない他の方法も) を比較対照し、それぞれの長所と短所について話しましょう。実行速度などの点で具体的な利点はありますか? 興味があります - 私たちはどう思いますか?

4

3 に答える 3

6

ExternalInferfaceは、JSとFlashの間の通信を容易にするために作成されたため、他のものを使用することは実際には意味がありません。一般的な方法は、JSを呼び出す前に、ExternalInterface.availableプロパティの値を評価して、最初に使用可能かどうかを確認することです。このプロパティは、JSを呼び出すSWFが、外部インターフェイスを提供するコンテナ内にあるかどうかを示します。言い換えれば、ExternalInterfaceを使用すると機能します。利用できない場合は、flash.net.sendToUrlを使用してください。fscommand()はVBScriptを使用し、ページ上の他のVBScriptと競合する可能性があるため、絶対に使用しないでください。さらに、fscommandで送信できる引数文字列は1つだけであり、JS側で分割する必要があります。

于 2008-11-24T04:44:19.340 に答える
5

それはすべて、どこでExternaInterfaceデータを返すことができ、非同期であり、JavaScript関数のみを呼び出すことができるため、通信を同期にするかどうかに依存します。値や応答を返すことはできません。navigatoToURLfscommand

外部インターフェイスに関連するライブ ドキュメントから:

ActionScript から、HTML ページで次の操作を実行できます。

  • JavaScript 関数を呼び出します。
  • 任意の数の引数を任意の名前で渡します。
  • さまざまなデータ型 (ブール値、数値、文字列など) を渡します。
  • JavaScript 関数から戻り値を受け取ります。

HTML ページの JavaScript から、次のことができます。

  • ActionScript 関数を呼び出します。
  • 標準の関数呼び出し表記を使用して引数を渡します。
  • JavaScript 関数に値を返します。

クラスは、flash.external.ExternalInterfaceクラスの直接の置き換えですflash.system.fscommand

したがって、ExternalInterface の使用は、flash と Javascript 関数の間の方法または通信として推奨されますが、呼び出しが単に非同期である場合は、flash.net.navigateToURL.

于 2008-11-25T19:20:41.317 に答える
2

外部インターフェース

  • JS-AS および AS-JS 呼び出しから戻り値を取得できます
  • 引数をエンコードします (配列、オブジェクトなどで呼び出します。エンコードする必要はありません)
  • クロスブラウザ
  • HTML または JSON (特殊なエンコーディング) を送信すると欠陥があり、内部で壊れます

getURL

  • JS しか呼び出せず、戻り値を取得できず、データをエンコードする必要があります
  • 非推奨よりも優れていて、Flash 10 では削除されました
  • 本当に削除されているので、使用しないでください ;)

fsコマンド

  • さあ、ExternalInterfaceが解決策です(2008年用)。
于 2008-12-01T15:25:47.190 に答える