是否可以從您的本機代碼返回結構?返回一個int或布爾值是相對直接的,但是如何將更復雜的結構返回給動作?從Air Native擴展返回結構
3
A
回答
6
您可以返回任何可以在本機代碼中表示爲FREObject的對象。這實際上包括任何Actionscript類或Actionscript原始數據類型。這包括喜歡的東西:整數,字符串,數組,的BitmapData整型,字節陣列等
例如允許構造長度爲4的返回陣列中的int值0 - 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等價物有些不同,但仍然可以從本地代碼中返回複雜的對象。
更多信息有此文件的堆:
-1
完成過程的返回值限制爲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實現IDataOut接口ByteArray等,這樣你就可以從中讀取任何基本類型。另請參閱NativeProcess文檔。
0
接受的答案是不準確的爲你原來的問題。你想要返回一個結構...以及你不能這樣做,但正確的方法是將你的本地結構/類編寫爲一個動作類,然後使用ExtensionContext對象來關聯你的本地結構或類指針與你的上下文。然後,當你可以寫入方法到你的結構/類,將直接與內部的方法和屬性接口。如果任何方法返回另一個結構或類,則遞歸地重複該過程。
0
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
還要考慮使用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. PHP擴展返回結構
- 2. 擴展結構
- 3. Groovy - 擴展結構
- 4. Air Native擴展:如何分配ByteArray並管理其內存?
- 5. 擴展類層次結構
- 6. 從Air擴展中獲取NSwindow
- 7. 在Rails中擴展從查詢返回的數組 - 重構
- 8. 從C擴展返回numpy數組
- 9. ADFS從擴展屬性返回索賠
- 10. SQLiteAssetHelper擴展返回null
- 11. VB.Net擴展類和結構?
- 12. 瞭解Firefox擴展結構
- 13. Firefox擴展文件結構
- 14. 擴展結構數組
- 15. 結構擴展方法
- 16. OpenIdButton的擴展返回null
- 17. 擴展方法,它返回
- 18. 返回擴展分類
- 19. 返回結構
- 20. Adobe AIR本機擴展
- 21. 的NetworkInfo機擴展爲AIR
- 22. Flex/AIR ComboBox緩慢擴展
- 23. 在Python中擴展(native)類
- 24. session.getCurrentProject()返回null - Maven擴展
- 25. 擴展方法返回InvalidCastException
- 26. 擴展列表返回無
- 27. 擴展返回父類型
- 28. 擴展Array.prototype返回undefined
- 29. 擴展Zend_Db_Table_Row_Abstract不返回值
- 30. HHVM擴展,如何返回
這僅適用的NativeProcess,不是原生擴展是真的。 – 2012-04-30 22:17:26