ネイティブ関数の呼び出し

ActionScript 拡張クラスは ExtensionContext.createExtensionContext() を呼び出した後に、ネイティブ実装のメソッドを呼び出すことができます。TVChannelController の例では、次のようにしてネイティブメソッドの "setDeviceChannel" および "getDeviceChannel" を呼び出します。

package com.example { 
    public class TVChannelController extends EventDispatcher { 
 
        private var extContext:ExtensionContext; 
        private var channel:int; 
 
        public function TVChannelController() { 
            extContext = ExtensionContext.createExtensionContext( 
                            "com.example.TVControllerExtension", "channel"); 
             
        } 
 
        public function set currentChannel(channelToSet:int):void { 
            extContext.call("setDeviceChannel", channelToSet); 
        } 
 
        public function get currentChannel():int { 
            channel = int (extContext.call("getDeviceChannel")); 
            return channel; 
        } 
 
} 

ExtensionContext の call() メソッドには、次のパラメーターがあります。

  • functionName。この文字列はネイティブ実装内の関数を表します。TVChannelController の例では、functionName の文字列は ActionScript メソッド名と異なります。これらの名前を同じに設定することもできます。また、functionName の文字列を、それが表すネイティブ関数の名前と同じにするかどうかを選択することもできます。ネイティブ実装で、この functionName の文字列とネイティブ関数とを関連付けます。この関連付けは、FREContextInitializer() メソッドの出力パラメーターにあります。拡張コンテキストの初期化を参照してください。

  • パラメーターに関するオプションのリスト。各パラメーターはネイティブ関数に渡されます。パラメーターには、int などのプリミティブ型か、任意の ActionScript オブジェクトを指定できます。

ExtensionContext の call() メソッドの戻り値は、プリミティブ型または ActionScript オブジェクトです。このメソッドが返すオブジェクトのサブクラスは、ネイティブ関数の戻り値によって異なります。例えば、ネイティブ実装の "getDeviceChannel" は int を返します。