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

10-05 18:49
查看更多