是否可以从您的本机代码返回结构?返回一个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