0

我有一个使用 ANE 在 Flash 中调用的原生 android 函数:

public class GetProductsFunction implements FREFunction {
    private static final String TAG = "GetProducts";

    @Override
    public FREObject call(FREContext context, FREObject[] args) {
        FREArray freArray = IAPManager.getInstance().getFREProducts();

        return freArray;
    }
}

在闪存方面,我这样调用函数:

var object:Object = this.extContext.call("GetProductsFunction");

我不太确定如何获取我返回的 FREArray。Flash 中的函数返回一个 ActionScript 对象,但您显然无法从对象中获取数组。

那么如何读取这些数据呢?

4

2 回答 2

1

Java端:

public class testFunction implements FREFunction {
    public FREByteArray call(FREContext context, FREObject[] passedArgs) {    
        FREByteArray freByteArray = null;
        try {
            byte[] rdata = ...the bytes you have...;
            int packetLenght = 8;

            //Prepare an ActionScript ByteArray
            freByteArray = FREByteArray.newByteArray();
            freByteArray.setProperty("length", FREObject.newObject(packetLenght));
            freByteArray.acquire();
            ByteBuffer bytes = freByteArray.getBytes();

            //Fill it
            if(rdata != null)
                bytes.put(rdata, 0, packetLenght );

            freByteArray.release();
        } catch (Exception ex) {
            Log.e("MYANE", "testFunction Exception " + ex.getMessage());
        }

        return freByteArray;
    }
}

动作脚本方面:

var rdata:ByteArray = new ByteArray();
var received:Object = extContext.call('test') as ByteArray;
if (received is ByteArray)
{
    //Read bytes in rdata
    received.readBytes(rdata);
}
于 2013-08-05T08:40:51.303 回答
0
FREObject stringElement = FREObject.newObject("String element value"); 
FREArray asVector = FREArray.newArray( "String", 1, false ); 
asVector.setObjectAt( 0, stringElement );

更多信息 http://help.adobe.com/en_US/air/extensions/WS982b6f491d178e6d6565d9b1132a79a012f-7ff8.html

于 2014-07-07T18:18:20.997 回答