-
パッケージ:
-
com.adobe.fre
-
ランタイムバージョン
-
AIR 3
FREFunction インターフェイスには、ネイティブ拡張内に定義された Java 関数をランタイムが呼び出すときに使用するインターフェイスが定義されています。
メソッド
メソッド
|
説明
|
FREObject call( FREContext ctx, FREObject[] args )
|
拡張の ActionScript 側からこの関数が呼び出されたときに、AIR ランタイムによって呼び出されます。
|
FREFunction インターフェイスは、拡張内にある Java 関数のうち、ネイティブ拡張ライブラリの ActionScript 側から呼び出せるものすべてに実装します。この機能を提供する FREContext インスタンスの
getFunctions()
から返される Java Map オブジェクトに、このクラスを追加します。
ActionScript 側にある ExtensionContext インスタンスの
call()
メソッドが実行されると、ランタイムによって
call()
メソッドが呼び出されます。
FREFunction をコンテキストの関数マップに追加するときには、文字列値をキーとして指定します。関数を ActionScript から呼び出すときは、それと同じ値を指定します。
メソッドの詳細
call
FREObject call( FREContext ctx, FREObject[] args )
この関数が ActionScript から呼び出されたときに、ランタイムによって呼び出されます。
call()
メソッドでは、FREFunction インスタンスによって提供される機能を実装(または起動)します。
パラメーター:
-
ctx
-
この拡張コンテキストを表す FREContext 変数。
ctx
パラメーターは次の場合に使用します。
-
args
-
FREObject 変数の配列として関数に渡す引数。配列内のオブジェクトは、Java 関数の呼び出しに使用された ActionScript ExtensionContext
call()
メソッドの引数です。
戻り値:
-
FREObject
-
結果。拡張の Java 側と ActionScript 側で共有されるオブジェクトは、すべて、1 個の FREObject または FREObject サブクラス内にカプセル化されます。
クラスの例
次に示す例は、1 個の文字列引数を取り、その中の文字を逆に並べた新しい文字列を返す関数です。
call()
関数では、関数呼び出しが行われたコンテキストから ID 文字列を取得するために
ctx
パラメーターが使用されています。
package com.example;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREInvalidObjectException;
import com.adobe.fre.FREObject;
import com.adobe.fre.FRETypeMismatchException;
import com.adobe.fre.FREWrongThreadException;
import android.util.Log;
public class ReverseStringFunction implements FREFunction {
public static final String NAME = "reverseString";
private String tag;
public FREObject call(FREContext arg0, FREObject[] arg1) {
DataExchangeContext ctx = (DataExchangeContext) arg0;
tag = ctx.getIdentifier() + "." + NAME;
Log.i( tag, "Invoked " + NAME );
FREObject returnValue = null;
try {
String value = arg1[0].getAsString();
value = reverse( value );
returnValue = FREObject.newObject( value );//Invert the received value
} catch (IllegalStateException e) {
Log.d(tag, e.getMessage());
e.printStackTrace();
} catch (FRETypeMismatchException e) {
Log.d(tag, e.getMessage());
e.printStackTrace();
} catch (FREInvalidObjectException e) {
Log.d(tag, e.getMessage());
e.printStackTrace();
} catch (FREWrongThreadException e) {
Log.d(tag, e.getMessage());
e.printStackTrace();
}
return returnValue;
}
private String reverse( String source ) {
int i, len = source.length();
StringBuffer dest = new StringBuffer(len);
for (i = (len - 1); i >= 0; i--)
dest.append(source.charAt(i));
return dest.toString();
}
}
|
|
|