Adobe Flex 3 ヘルプ

コンテナからの ActionScript コードの呼び出し

コンテナが呼び出すことができるのは関数内の ActionScript コードのみです。それ以外の ActionScript コードは、コンテナから呼び出せません。コンテナアプリケーションから ActionScript 関数を呼び出すには、ExternalInterface クラスに関数を登録し、コンテナのコードからその関数を呼び出すという 2 つの操作が必要です。

最初に、ActionScript 関数を登録し、コンテナから使用可能にすることを示す必要があります。ExternalInterface.addCallback() メソッドを次のように使用します。

function callMe(name:String):String
{
    return "busy signal";
}
ExternalInterface.addCallback("myFunction", callMe);

addCallback() メソッドには 2 つのパラメータがあります。1 つはストリングの関数名で、コンテナはその名前で関数を認識します。もう 1 つのパラメータは実際の ActionScript 関数で、定義された関数名をコンテナが呼び出すと実行されます。これらの名前は区別されるため、実際の ActionScript 関数が異なる名前であっても、コンテナで使用される関数名を指定できます。このことは、匿名関数が指定された場合や、呼び出される関数が実行時に決定される場合など、関数名が不明な場合に非常に役立ちます。

ActionScript 関数が ExternalInterface クラスに登録されると、コンテナが実際に関数を呼び出せるようになります。その方法は、コンテナのタイプによって異なります。例えば、Web ブラウザの JavaScript コードの場合、ActionScript 関数は、Flash Player ブラウザオブジェクトのメソッド(object または embed タグを表す JavaScript オブジェクトのメソッド)と同じように、登録された関数名を使用して呼び出されます。つまり、パラメータが渡され、呼び出されたローカル関数から結果が返されます。

<script language="JavaScript">
    // callResult gets the value "busy signal"
    var callResult = flashObject.myFunction("my name");
</script>
...
<object id="flashObject"...>
    ...
    <embed name="flashObject".../>
</object>

あるいは、デスクトップアプリケーションを実行している SWF ファイルの ActionScript 関数を呼び出すときに、登録された関数名およびすべてのパラメータが XML フォーマットストリングに直列化されている必要があります。その後、ActiveX コントロールの CallFunction() メソッドとパラメータとして XML ストリングを呼び出すことで、呼び出しが実際に実行されます。この通信で使用される XML フォーマットの詳細については、外部 API の XML フォーマットを参照してください。

いずれの場合も、ActionScript 関数の戻り値はコンテナコードに返されますが、呼び出し側がブラウザの JavaScript コードの場合は値として直接返され、呼び出し側が ActiveX コンテナの場合は XML フォーマットストリングとして直列化して返されます。

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート