Tôi đang cố gắng xây dựng một bộ điều khiển bằng cách sử dụng Luaj + java. Tôi có các lớp java sauLàm cách nào để chuyển đối tượng sang hàm luaj được phơi sáng?
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!"); }
}
và kịch bản lua sau cho bộ điều khiển:
onTalk(obj)
obj:talk();
end
onWalk(obj)
obj:walk();
end
Tôi lý tưởng muốn xác định một bộ điều khiển (viết bằng lua), nơi tôi sẽ giữ tất cả các chương trình của logic, và tôi muốn để lộ API từ bộ điều khiển đó đến mã java của tôi. Tôi đã cố gắng sử dụng các phương pháp sau đây:
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 ???
Tôi không thể vượt qua các đối tượng để các LuaValue. Làm thế nào tôi có thể vượt qua một đối tượng java để kịch bản lua?
PS: Nói chung, khi sử dụng Java và tập lệnh nhúng, hãy thực hiện các chức năng của mọi người trong một tập lệnh hoặc có một tập lệnh riêng cho mỗi cuộc gọi lại không?
Cái crap thánh này là vàng. Cảm ơn bạn. – Qix