如何将对象传递给一个暴露的luaj函数? [英] How can I pass objects to an exposed luaj function?
本文介绍了如何将对象传递给一个暴露的luaj函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图使用Luaj + java构建一个控制器。我有以下的java类
public class Duck {
public void talk(){System.out.println 鸭acks!); }
public void walk(){System.out.println(Duck walking! }
}
public class Person {
public void talk(){System.out.println(Person talks! }
public void walk(){System.out.println(Person walks! }
}
和以下控制器的lua脚本:
onTalk(obj)
obj:talk();
end
onWalk(obj)
obj:walk();
end
我希望定义一个控制器保留所有程序的逻辑,我想将API从该控制器暴露到我的java代码。我试图使用以下方法:
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByExtension(。lua);
ScriptEngineFactory factory = engine.getFactory();
//上面定义的脚本
CompiledScript cs =((Compilable)engine).compile(MY_LUA_SCRIPT);
SimpleBindings b = new SimpleBindings();
b = newSimpletBindings();
LuaValue onWalkHandler =(LuaValue)b.get(onWalk);
//func.call(LuaValue.valueOf(duck)); //传递鸭子对象不工作???
我无法将对象传递给LuaValue。如何将一个java对象传递给lua脚本?
PS:一般来说,当使用Java和嵌入脚本时,人们在一个脚本中捆绑函数,