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で書かれた)1つのコントローラを定義したいと思いますロジック、私はそのコントローラから私のJavaコードにAPIを公開したいと思います。
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と組み込みスクリプトを使用する場合、1つのスクリプトで人々バンドル関数を実行するか、すべてのコールバックに対して別々のスクリプトがありますか?
これはゴールドです。ありがとうございました。 – Qix