LuaScriptCore icon indicating copy to clipboard operation
LuaScriptCore copied to clipboard

支持推送javaObject到Lua脚本使用吗?

Open sapoiuyt opened this issue 4 years ago • 8 comments

我看了源码 貌似没有发现可以推object进栈给lua调用的

sapoiuyt avatar Apr 29 '20 09:04 sapoiuyt

任何非ExportType对象传到lua都会被会以userdata包装,如果不在lua中进行原生对象的操作,仅仅作为传递对象使用的话,这样是可以的。

vimfung avatar Apr 29 '20 09:04 vimfung

任何非ExportType对象传递到lua都会被会以userdata包装,如果不在lua中进行原生对象的操作,只是作为传递对象使用的话,这样是可以的。

我尝试了Android 的2.4 版本,用setGlobal 使用string的类型没问题,但是传Object 出现nil报错

sapoiuyt avatar Apr 29 '20 16:04 sapoiuyt

如果出现nil就是不正常的,我先看看是什么问题

vimfung avatar Apr 29 '20 16:04 vimfung

如果出现nil就是不正常的,我先看看是什么问题

早些休息吧,有时间再处理。 辛苦了

sapoiuyt avatar Apr 29 '20 16:04 sapoiuyt

😄

vimfung avatar Apr 29 '20 16:04 vimfung

你好,这个问题我测试了一下并没发现存在问题,能告诉我具体你的代码和系统版本吗?以下是我测试的代码片段:

_luaContext.setGlobal("nativeObject", new LuaValue(new Object()));
_luaContext.evalScript("print(nativeObject);");
LuaValue objValue = _luaContext.getGlobal("nativeObject");
Log.v("lsc", objValue.toObject().toString());

输出是没有问题的

05-10 09:10:08.171 3589-3589/cn.vimfung.luascriptcore.sample I/luascriptcore: _ObjectReference_: 0x7089ed5ebf48
05-10 09:10:08.172 3589-3589/cn.vimfung.luascriptcore.sample V/lsc: java.lang.Object@1c846bd

vimfung avatar May 10 '20 01:05 vimfung

你好,这个问题我测试了一下并没发现存在问题,能告诉我具体你的代码和系统版本吗?以下是我测试的代码片段:

_luaContext.setGlobal("nativeObject", new LuaValue(new Object()));
_luaContext.evalScript("print(nativeObject);");
LuaValue objValue = _luaContext.getGlobal("nativeObject");
Log.v("lsc", objValue.toObject().toString());

输出是没有问题的

05-10 09:10:08.171 3589-3589/cn.vimfung.luascriptcore.sample I/luascriptcore: _ObjectReference_: 0x7089ed5ebf48
05-10 09:10:08.172 3589-3589/cn.vimfung.luascriptcore.sample V/lsc: java.lang.Object@1c846bd

FreeSpace freeSpace =新的FreeSpace(); LuaValue value =new LuaValue(freeSpace); _luaContext.setGlobal(“ F”,value); 在lua的脚本文件调用F变量出现报错了 注冊全局類變量必須implements LuaExportType嗎?

sapoiuyt avatar May 11 '20 15:05 sapoiuyt

请问您说的调用是怎么调用呢?如果是要调用FreeSpace里面的属性或者方法是必须要实现LuaExportType的,如果仅仅是作为参数传递是没有问题的。例如在原生层registerMethod一个方法,然后把这个F传入这个方法是可行的。

vimfung avatar May 12 '20 02:05 vimfung