LUA 桥 LuaJ 使用笔记

  • 开干前的准备
    1.安装lua插件 Intellij 系列 推荐emmylua

mac 只有 lua

2.下载LuaJ
推荐使用静态jar 下载地址
下载后选择luaj-jse-3.0.1.jar使用
maven库:compile 'org.luaj:luaj-jse:3.0.1'


*开鲁
lua代码


    private void initLua(){
        LogsUtils.iNative("initLua JsePlatform.standardGlobals()");
         globals = JsePlatform.standardGlobals();
        LogsUtils.iNative("initLua globals.loadfile");
        //加载lua 脚本文件
        LuaValue chunk  = globals.loadfile(luaDirectoryFile.getAbsolutePath()+"/hello_lua.lua");
        LogsUtils.iNative("initLua chunk.call()");
        chunk.call();
    }
    private void callLua(String str) {
        LogsUtils.iNative("callLua");
        globals = JsePlatform.standardGlobals();
        //加载lua 脚本文件
        globals.loadfile(luaDirectoryFile.getAbsolutePath() + "/putstring.lua").call();
        LogsUtils.iNative("获取全局函数 analysisData(str)");
        LuaValue analysisData = globals.get(LuaValue.valueOf("analysisData"));
        LogsUtils.iNative("调用并传递参数");
        analysisData.invoke(new LuaValue[]{LuaValue.valueOf(str)});
    }

    private void luaReturn(String str) {
        LogsUtils.iNative("luaReturn");
        globals = JsePlatform.standardGlobals();
        //加载lua 脚本文件                                                          --重点.call()才执行编译
        globals.loadfile(luaDirectoryFile.getAbsolutePath() + "/lua_return.lua").call();
        LogsUtils.iNative("获取全局函数 luaReturn(str)");
        LuaValue luaReturn = globals.get(LuaValue.valueOf("luaReturn"));
        LogsUtils.iNative("调用并传递参数");
        Varargs varargs =  luaReturn.invoke(new LuaValue[]{LuaValue.valueOf(str)});
        LogsUtils.iNative("读取lua 返回数据");
        LuaValue luaValue =  varargs.arg1();
        LogsUtils.iNative("lua return  =%s",luaValue.toString());
    }

方法以此对应下方lua 函数

-- lua 编译测试
print("hello  luaj !!!")

--callLua(String str) 
function analysisData(str)
    print("analysisData")
    print(str)

end

--luaReturn(String str) 

function luaReturn(str)
    print("luaReturn")
    print(str)
return "from lua:"
end

日志输出

I/-------LogsUtilsiNative: callLua
I/-------LogsUtilsiNative: 获取全局函数 analysisData(str)
    调用并传递参数
I/System.out: analysisData
    java call Lua 1551342404549
I/-------LogsUtilsiNative: luaReturn
I/-------LogsUtilsiNative: 获取全局函数 luaReturn(str)
    调用并传递参数
I/System.out: luaReturn
    luaReturn 1551342405700
I/-------LogsUtilsiNative: lua return  =from lua:


future 补充lua 直接调用java 静态方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,906评论 0 38
  • 有点懒得把图片传上来了,请移步这里看 Cocos官方论坛-wiki CocoaChina论坛帖子 上面两个是一样的...
    椒盐老蛏阅读 5,353评论 1 6
  • 请允许我借鉴前辈们的东西~~~~ 感激不尽~~~~~ 以下为Android 框架排行榜 么么哒~ Android...
    嗯_新阅读 2,127评论 3 32
  • 博客原文链接 Android百大框架排行榜(转) 说明: 无聊写一篇笔记式文章. 精力有限,很多错误之处,受时间与...
    码农朱同学阅读 2,714评论 0 27
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,724评论 0 3