是否可以从本机代码返回结构?返回int或boolean相对简单,但是如何将更复杂的结构返回给actionscript?
最佳答案
您可以返回任何可以在本机代码中表示为FREObject的对象。实际上,这包括任何Actionscript类或Actionscript基本数据类型。这包括以下内容:int,String,Array,BitmapData,ByteArray等。
例如,让我们构造一个长度为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等效项有些不同,但是仍然可以从本机代码返回复杂的对象。
有关更多信息,请参见此处的大量文档:
http://help.adobe.com/en_US/air/extensions/index.html