我想用Luaj + java構建一個控制器。我有以下的Java類如何將對象傳遞給暴露的luaj函數?
public class Duck {
public void talk() { System.out.println("Duck quacks!"); }
public void walk() { System.out.println("Duck walks!"); }
}
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
我非常喜歡來定義一個控制器(用LUA),我將保留所有的程序的邏輯,我想將該控制器的API公開給我的java代碼。我試圖使用以下方法:
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByExtension(".lua");
ScriptEngineFactory factory = engine.getFactory();
// Script defined above
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)); // Passing duck object does not work ???
我無法將對象傳遞給LuaValue。我如何將java對象傳遞給lua腳本? PS:通常,當使用Java和嵌入式腳本時,人們是否將函數捆綁在一個腳本中,或者每個回調都有單獨的腳本?
這是黃金的廢話。謝謝。 – Qix