gpt4 book ai didi

java - FREObject.callMethod 与 FREArray 作为参数错误

转载 作者:行者123 更新时间:2023-11-29 08:59:50 26 4
gpt4 key购买 nike

我在 native 扩展中从 Java 调用 ActionScript 方法时遇到问题。在构建实际数组、使用 FREObjects 填充它并使用我要调用的方法初始化 ActionScript 类时,我没有收到任何错误。但是当我实际调用该方法时,我收到了 FREASErrorException。

Java 代码:

try {
FREArray freArray = FREArray.newArray("com.industrycorp.extensions.product.IAPProduct", mProducts.size(), true);

for (int i = 0; i < mProducts.size(); i++) {
JavaProduct product = mProducts.get(i);
FREObject[] freArguments = new FREObject[6];
freArguments[0] = FREObject.newObject(product.getName());
freArguments[1] = FREObject.newObject(product.getPrice());
freArguments[2] = FREObject.newObject(product.getDescription());
freArguments[3] = FREObject.newObject(product.getType());
freArguments[4] = FREObject.newObject(product.getIsPurchased());
freArguments[5] = FREObject.newObject(product.getInventory());

FREObject freObject = FREObject.newObject("com.industrycorp.extensions.product.IAPProduct", freArguments);
freArray.setObjectAt(i, freObject);

}

FREObject resultHandler = FREObject.newObject("com.industrycorp.extensions.result.ResultHandler", null);
FREObject[] args = new FREObject[1];
args[0] = freArray;


resultHandler.callMethod("receivedProducts", args);



} catch (Exception e) {
mContext.dispatchStatusEventAsync("message", "Error converting Java Products to IAP Products: "+e.toString());
}

罪魁祸首是:resultHandler.callMethod("receivedProducts", args)。我不确定是什么问题。命名空间正确,方法名正确。

ActionScript 类:

package com.industrycorp.extensions.result {
import com.industrycorp.extensions.IAPController;

public class ResultHandler {

public function ResultHandler() {
}

public function receivedProducts(products:Array):void {

IAPController.getInstance().setProducts(products);

}
}
}

更新

只为那些好奇的人。这个对象工作正常。

ActionScript 代码

    // Test FREObject Creation
FREObject testObject = FREObject.newObject("com.industrycorp.extensions.TestObject", null);
FREObject message = FREObject.newObject("FREObject wOrks");
FREObject[] testArgs = new FREObject[1];
testArgs[0] = message;
testObject.callMethod("PrintTest", testArgs);

Java 代码

package com.industrycorp.extensions {
public class TestObject {

public function TestObject() {
}

public function PrintTest(message:String):void {
trace(message);
}

}
}

所以这绝对是 FREArray/Array 作为参数的问题。

最佳答案

我不知道这是否行得通,因为我没有办法测试,但它对于评论来说太大了,所以如果它是错误的,请不要标记。

查看文档,您似乎正在创建一个 vector 数组,我认为您收到错误是因为操作脚本中的参数设置为数组。

尝试这样的事情

    public function receivedProducts(products:Vector.<IAPProduct>):void {
IAPController.getInstance().setProducts(products);
}

[编辑]

我认为我看到的另一个问题是这行代码

FREObject[] freArguments = new FREObject[6];

文档说

public static FREObject newObject( int value )
Creates an FREObject containing a 32-bit signed integer value.

不应该吗

FREArray [] freArguments = new FREArray [6];

关于java - FREObject.callMethod 与 FREArray 作为参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18132843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com