ネイティブ関数の入力パラメーターは、ActionScript クラスオブジェクトに対応させることができます。すべてのネイティブ関数パラメーターは FREObject 型であるので、C API では、FREObject 変数を使用してクラスオブジェクトを操作するための関数が提供されます。
ActionScript クラスオブジェクトのプロパティを取得および設定するには、次の C API 関数を使用します。
-
FREGetObjectProperty()
FREResult FREGetObjectProperty(
FREObject object,
const uint8_t* propertyName,
FREObject* propertyValue,
FREObject* thrownException
);
-
FRESetObjectProperty()
REResult FRESetObjectProperty(
FREObject object,
const uint8_t* propertyName,
FREObject propertyValue,
FREObject* thrownException
);
ActionScript クラスオブジェクトのメソッドを呼び出すには、次の C API を使用します。
FRECallObjectMethod()
FREResult FRECallObjectMethod(
FREObject object,
const uint8_t* methodName,
uint32_t argc,
FREObject argv[],
FREObject* result,
FREObject* thrownException
);
出力パラメーターまたは戻り値が ActionScript クラスオブジェクトに対応する場合は、C API を使用して ActionScript オブジェクトを作成します。FREObject 変数へのポインターに加えて、ActionScript クラスコンストラクターのパラメーターに対応する FREObject 変数を指定します。ランタイムは ActionScript クラスオブジェクトを作成し、FREObject 変数を、そのクラスオブジェクトに対応するように設定します。次の C API 関数を使用します。
FRENewObject()
FREResult FRENewObject(
const uint8_t* className,
uint32_t argc,
FREObject argv[],
FREObject* object,
FREObject* thrownException
);
注意:
これらの一般的な ActionScript オブジェクト操作関数は、すべての ActionScript クラスオブジェクトに適用されます。ただし、ActionScript Array、Vector、ByteArray および BitmapData クラスは、大容量のデータが関係するので特殊なケースとなります。そのため、C API ではこれらの特殊なケースのオブジェクトを操作するための、他の個別の関数が提供されます。