autojs之lua
Posted AutoJsPro教程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了autojs之lua相关的知识,希望对你有一定的参考价值。
使用场景
在autojs中使用lua
依赖jar
luaJ是一个java实现的lua脚本解释器
luaj-jse-3.0.1.jar
效果展示
autojs版本
原理
luaj.jar执行lua
知识点
加载jar
导入类
创建globals管理lua全局
执行lua的两种方式
获取lua变量的值
代码讲解
加载jar
let dexFilepath = "./luaj-jse-3.0.1.jar";
runtime.loadJar(dexFilepath);
导入类
importClass("org.luaj.vm2.lib.jse.JsePlatform");
创建Globals对象来管理全局状态
globals = JsePlatform.standardGlobals();
执行lua文件
var luaPath = files.path("./luaTest.lua");
globals.loadfile(luaPath).call();
获取lua变量的值
c = globals.get("c").toString();
log("c: " + c);
另一种运行lua脚本的方式
s = ""; //lua脚本
s += "x=3 ";
s += "y=4 ";
s += "print ('hello world!') ";
s += "function aa() ";
s += "print ('aaa') ";
s += "end ";
s += "aa() ";
s += "function method1() ";
s += "return x * 2 ";
s += "end ";
s += "c=method1(x) ";
chunk = globals.load(s); //加载自己写的脚本
chunk.call(); //执行脚本
c = globals.get("c").toString(); //取得脚本里的变量d的值
log("c: " + c);
lua代码
x = 3
y = 4
print("hello world!")
function aa()
print("aaa")
end
aa()
function method1(x)
return x * 2
end
c = method1(x)
print(c)
完整源码
let dexFilepath = "./luaj-jse-3.0.1.jar";
runtime.loadJar(dexFilepath);
importClass("org.luaj.vm2.lib.jse.JsePlatform");
//创建Globals对象来管理全局状态
globals = JsePlatform.standardGlobals();
var luaPath = files.path("./luaTest.lua");
globals.loadfile(luaPath).call();
c = globals.get("c").toString(); //取得脚本里的变量d的值
log("c: " + c);
// s = ""; //lua脚本
// s += "x=3 ";
// s += "y=4 ";
// s += "print ('hello world!') ";
// s += "function aa() ";
// s += "print ('aaa') ";
// s += "end ";
// s += "aa() ";
// s += "function method1() ";
// s += "return x * 2 ";
// s += "end ";
// s += "c=method1(x) ";
// chunk = globals.load(s); //加载自己写的脚本
// chunk.call(); //执行脚本
// c = globals.get("c").toString(); //取得脚本里的变量d的值
// log("c: " + c);
微信公众号 AutoJsPro教程
QQ群
747748653
以上是关于autojs之lua的主要内容,如果未能解决你的问题,请参考以下文章