LuaJ - CoerceJavaToLua将Java对象转换成Lua对象。

如果我执行以下代码:

CoerceJavaToLua (new Vector2(3, 5));

它会返回什么,我该如何在 lua 中访问这些值?我需要将返回值传递给以下代码吗?

globals.load(CoerceJavaToLua(new Vector2(3, 5)));
点赞
用户2556943
用户2556943

它将Java值转换为包含元表的LuaValue,使其方便在lua脚本中操作。

而不是加载,尝试在全局设置一个强制转换后的值,然后执行使用该值的脚本:

Globals globals = JsePlatform.standardGlobals();
globals.set("image", CoerceJavaToLua.coerce(
        new BufferedImage(30,40,BufferedImage.TYPE_INT_RGB)));
LuaValue chunk = globals.load(
        "print(image:getWidth(), image:getHeight());");
chunk.call();

输出为:

30  40

任何image上的公共字段或方法都是可访问的,并且返回值是强制转换的,因此此时可以在lua中执行Java中的大多数操作。

请参见swing示例,以查看包括回调处理在内的详细示例。

http://www.luaj.org/luaj/3.0/examples/lua/swingapp.lua

2016-01-23 17:25:50