是否可以從您的本機代碼返回結構?返回一個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. 從Air擴展中獲取NSwindow
- 3. Firefox擴展文件結構
- 4. 擴展結構數組
- 5. 結構擴展方法
- 6. OpenIdButton的擴展返回null
- 7. 擴展方法,它返回
- 8. 返回擴展分類
- 9. 擴展Zend_Db_Table_Row_Abstract不返回值
- 10. 擴展方法返回InvalidCastException
- 11. 的NetworkInfo機擴展爲AIR
- 12. Flex/AIR ComboBox緩慢擴展
- 13. Air Native Menu
- 14. Alamofire的Swift擴展方法返回SwiftyJSON結果
- 15. SWIG Lua:使用%native擴展(%擴展)類。可以添加%native方法嗎?
- 16. 結構從mysql_get_assoc返回的數據
- 17. 從結構樹返回父級ID
- 18. 從Web服務返回表格結構
- 19. 在Python中擴展類層次結構
- 20. 返回基於ID的擴展記錄,因爲JSON結果
- 21. Powershell的LDAP搜索未返回擴展架構屬性
- 22. 通過類擴展和返回值
- 23. 問題,從文件返回結構,以結構
- 24. MATLAB extractHOGFeatures返回空結構
- 25. jquery擴展返回$。每個混亂
- 26. Extender Provider無法返回擴展程序
- 27. 遞歸擴展結構定義?
- 28. Visual Studio 2015文件結構擴展
- 29. 在循環中擴展結構/文檔
- 30. 在C++中初始化擴展結構
這僅適用的NativeProcess,不是原生擴展是真的。 – 2012-04-30 22:17:26