ネイティブコードから構造体を返すことは可能ですか? intやbooleanを返すのは比較的簡単ですが、もっと複雑な構造体をActionScriptに戻すにはどうすればいいですか?エアネイティブ拡張から構造体を返す
答えて
ネイティブコードで表現できるオブジェクトをFREObjectとして返すことができます。これには、実際にはActionscriptクラスまたはActionscriptプリミティブデータ型が含まれます。このようなもの含む:INTを、文字列、配列、のBitmapData、ByteArrayの等
例えばintは0の値を持つ長さ4の戻り配列を構築することができます - 3:
FREObject returnAnArray(FREContext cts, void* funcData, uint32_t argc, FREObject argv[])
{
FREObject returnArray = NULL;
FRENewObject((const uint8_t*)"Array", 0, NULL, &returnArray, nil);
FRESetArrayLength(returnArray, 4);
for (int32_t i = 0; i < 4; i++)
{
FREObject element;
FRENewObjectFromUint32(i, element);
FRESetArrayElementAt(returnArray, i, element);
}
return returnArray;
}
ActionScriptを構築する方法クラスは少し複雑ですが、同様のパスに従います。これはネイティブなCの例ですが、Javaと同等ですが、ネイティブコードから複雑なオブジェクトを返すことは可能です。
詳細についてはドキュメントの山がここにあります:
終了プロセスからの戻り値は、int
に制限されています。しかし、あなたはstdoutにデータを書き込むと、AIRアプリケーションでそれを読むことができます:
p = new NativeProcess();
p.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
private function onOutputData(evt:ProgressEvent):void {
var outputData:String = p.standardOutput.readUTFBytes(p.standardOutput.bytesAvailable);
trace(outputData);
}
StandardOutputは、ByteArrayのようなIDataOutインターフェイスを実装しているので、あなたはそれから任意の基本的な型を読み込むことができます。 NativeProcessドキュメントも参照してください。
受け入れ答えはあなたの元の質問のために正確ではありません。あなたは構造体を返そうとしています...実際にはできませんが、これを行う適切な方法は、ネイティブ構造体/クラスをactionscriptクラスとして記述し、ExtensionContextオブジェクトを使用してネイティブ構造体またはクラスポインタを関連付けますあなたの文脈で次に、あなたが構造体/クラスの中にあるメソッドやプロパティと直接インターフェースするメソッドを書くことができます。その中のいずれかのメソッドが別の構造体またはクラスを返す場合は、プロセスを再帰的に繰り返します。
のJavaの例は
戻るアレイ
FREObject stringElement = FREObject.newObject("String element value");
FREArray array = FREArray.newArray("String", 1, false);
array.setObjectAt(0, stringElement);
//now you can return array to AS3
詳細情報 http://help.adobe.com/en_US/air/extensions/WS982b6f491d178e6d6565d9b1132a79a012f-7ff8.html
はまた、これが唯一にNativeProcessではなく、ネイティブ拡張のために真であるJSON
JSONObject jsonObject = new JSONObject();
try
{
jsonObject.put("messgae", "Hello");
jsonObject.put("name", "John");
}
catch (JSONException e)
{
}
FREObject jsonString FREObject.newObject(jsonObject.toString());
//now you can return jsonString to AS3
- 1. 構造体の拡張メソッド
- 2. 構造体の拡張メソッド
- 3. 構造体配列を拡張する
- 4. Goを構造体に拡張する
- 5. 構造体からncurses拡張文字を使用する
- 6. 他の構造体内にある構造体を拡張する
- 7. COMから構造体を返す
- 8. エアネイティブ拡張:iOSパッケージ依存(Firebase)
- 9. 継承クラスで構造体を拡張する
- 10. Doubleを自分の構造体内で拡張する
- 11. Swift構造体の拡張を作成する方法JoinedSequence?
- 12. 構造体/ドキュメントをループ内に拡張する
- 13. 構造体のクラス拡張を作成するには?
- 14. スウィフトプロトコル拡張(構造)タイプ
- 15. Swift構造体拡張子初期化子を追加
- 16. 新しい構造体からの汎用構造体の返却
- 17. 構造体のポインタからの構造体の値へのアクセス
- 18. 構造体全体をしっかりと返しますか?
- 19. 構造体をリンクリストの関数から返す
- 20. 条件から構造体のフィールド値を返す
- 21. 配列と構造体をC++関数から返す#
- 22. CppUtest:模擬関数からカスタム構造体を返す方法
- 23. 関数から構造体へのポインタを返す
- 24. 関数から構造体を返します
- 25. 拡張可能ハンドラ/プラグインアーキテクチャのRuby構造
- 26. Python拡張モジュールパッケージ構造(名前空間)
- 27. Visual Studio 2015ファイル構造拡張子
- 28. Golang:構造体のフィールドをループして構造体を返します。
- 29. 一般的な配列型指定の構造体を拡張する
- 30. Golangで構造体を返す
を使用することを検討してください。 –