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;
    }
}

ActionScript 側:

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 に答える