拡張関数

ActionScript 側で、ExtensionContext インスタンスの call() メソッドを呼び出すことで、ユーザー実装の C 関数を呼び出します。 call() メソッドには、次のパラメーターがあります。

  • 関数名。この名前は、コンテキスト初期化関数の出力パラメーターに設定したものです。この名前は、ActionScript 側とネイティブ側の間で合意した、任意の文字列です。通常、実際のネイティブ C 関数名と同じ名前です。ただし、ランタイムが任意の名前と実際の関数を関連付けるため、これらの名前は異なる場合があります。

  • ネイティブ関数の引数のリスト。これらの引数には、ActionScript オブジェクト(プリミティブ型または ActionScript クラスオブジェクト)を指定できます。

同じ関数シグネチャの FREFunction() を使用して、各ネイティブ関数を定義します。ランタイムは各ネイティブ関数に次のパラメーターを渡します。

  • FREContext 値。ネイティブ関数はこの値を使用して、コンテキスト固有データにアクセスし、そのデータを設定できます。また、ネイティブ実装は FREContext 値を使用して、ActionScript 側に非同期イベントを送出します。

  • 関数に関連付けられたデータへのポインター。このデータは任意のネイティブデータです。ランタイムがネイティブ関数を呼び出すときに、関数にこのデータポインターを渡します。

  • 関数パラメーター数。

  • 関数パラメーター。各関数パラメーターは、FREObject 型です。これらのパラメーターは ActionScript クラスオブジェクトまたはプリミティブデータ型に対応します。

ネイティブ関数は FREObject 型の戻り値も持っています。ランタイムは、対応する ActionScript オブジェクトを、ExtensionContext call() メソッドの戻り値として返します。

注意: ネイティブ関数は非表示にせず、デフォルトの表示を使用してください。

次のシーケンス図に、AIR アプリケーションが関数呼び出しを行った結果、 FREFunctionF() という名前のネイティブ C 関数が呼び出される様子を示します。この例では、C 関数は以下を実行します。

  • コンテキスト固有ネイティブデータを取得します。

  • ActionScript オブジェクトの int32 値を取得します。

  • 後でイベントを送出する非同期スレッドを開始します。

注意: C 関数 FREFunctionF() の動作は、呼び出しシーケンスを示すサンプルの動作にすぎません。
フルサイズのグラフィックを表示
ネイティブ関数の呼び出しシーケンスのサンプル