我正在使用动作脚本调用lua中的函数
callstack : Array = luaAlchemyInstance.doString("luafunction");
我的函数应返回一些值
function luafunction()
return true, 125
end
当我查看as3中函数返回的callstack数组时,我只收到成功/失败部分。数组长度为1,为true,并且不包含任何返回值。
任何想法都会出错?干杯
答案 0 :(得分:1)
我不知道lua-alchemy,但是如果doString()
遵循与标准Lua相同的语义,那么调用该函数的正确方法应该是:
callstack : Array = luaAlchemyInstance.doString("return luafunction()");
答案 1 :(得分:1)
doString()
返回调用返回的值数组。该数组的第一项是true
或false
,表示呼叫成功或失败。如果是false
,则第二项是错误消息。
另请注意,doString()
将实际的Lua代码作为参数,因此它应该是
doString("return luafunction()")
请参阅documentation和example。
答案 2 :(得分:-2)
我只见过一次ActionScript中的函数,它一次返回一个变量类型(Number,String,Boolean等)。
看起来你正试图同时返回一个Boolean和一个Number / int / uint值。
你可以尝试将两者作为对象值返回,如下所示:
function luafunction():Object
{
var obj:Object = new Object();
obj.myBoolean = true;
obj.myNumber = 125;
return obj;
}
然后您可以通过以下方式检索您的值:
trace(obj.myBoolean, obj.myNumber);