外部 API の要件と利点

Flash Player 9 以降、Adobe AIR 1.0 以降

External API は ActionScript の一部で、Flash Player のコンテナとして機能する「外部アプリケーション」(一般的には Web ブラウザーまたはスタンドアローンのプロジェクターアプリケーション)で実行されるコードと ActionScript 間の通信用メカニズムを提供します。ActionScript 3.0 では、External API の機能が ExternalInterface クラスによって提供されます。 Flash Player 8 よりも前のバージョンの Flash Player では、 fscommand() アクションを使用してコンテナアプリケーション内での通信が実行されていました。ExternalInterface クラスは、 fscommand() に代わるものです。

注意: 以前の fscommand() 関数を使用する必要がある場合(例えば、以前のバージョンのアプリケーションとの互換性を維持する場合や、サードパーティーの SWF コンテナアプリケーションやスタンドアローン Flash Player で操作する場合など)は、パッケージレベルの関数として flash.system パッケージに用意されています。

ExternalInterface クラスは、HTML ページ上で ActionScript および Flash Player から JavaScript への通信を容易にするサブシステムです。

ExternalInterface クラスは次の条件でのみ使用できます。

  • Windows 版 Internet Explorer の全サポートバージョン(5.0 以降)

  • NPRuntime インターフェイスをサポートする任意のブラウザー。これには現在、Firefox 1.0 以降、Mozilla 1.7.5 以降、Netscape 8.0 以降および Safari 1.3 以降が含まれます。

  • HTMLLoader コントロールによって表示されている HTML ページに SWF が埋め込まれている場合の AIR アプリケーション

その他の環境(スタンドアローン Player で実行する場合など)では、 ExternalInterface.available プロパティは false を返します。

ActionScript から、HTML ページの JavaScript 関数を呼び出すことができます。 External API の機能は、次の点において fscommand() よりも強力です。

  • fscommand() 関数から使用できる機能だけでなく、すべての JavaScript 関数を使用できます。

  • 1 つのコマンドと 1 つのストリングパラメーターという制限はなく、任意の個数のパラメーターを任意の名前で渡すことができます。 これにより、External API は fscommand() よりも非常に柔軟になっています。

  • String パラメーターだけでなく、様々なデータ型(Boolean、Number、String など)を渡すことができます。

  • 呼び出し結果の値を受け取ることができます。結果は呼び出しに対する戻り値として、直ちに ActionScript に戻されます。

重要: HTML ページの Flash Player インスタンスに指定された名前( object タグの id 属性)がハイフン( - )または JavaScript の演算子として定義されているその他の文字( + * / ¥ . など)を含んでいる場合、コンテナ Web ページが Internet Explorer で表示されると、ActionScript からの ExternalInterface 呼び出しが機能しません。また、Flash Player インスタンスを定義する HTML タグ( object タグと embed タグ)が HTML form タグ内にネストされている場合、ActionScript からの ExternalInterface 呼び出しが機能しません。