Sto provando a creare un controller usando Luaj + java. Ho le seguenti classi JavaCome posso passare oggetti a una funzione luaj esposta?
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!"); }
}
e il seguente script lua per il controllore:
onTalk(obj)
obj:talk();
end
onWalk(obj)
obj:walk();
end
vorrei idealmente come per definire un controller (scritti in LUA), dove terrò tutto il programma di logica, e vorrei esporre API da quel controller al mio codice java. Stavo cercando di utilizzare il seguente approccio:
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 ???
io non sono in grado di passare l'oggetto al LuaValue. Come posso passare un oggetto java allo script lua?
PS: In generale, quando si utilizza Java e script incorporati, le persone raggruppano le funzioni in uno script oppure esiste uno script separato per ogni callback?
Santo schifo questo è oro. Grazie. – Qix