如果我要做

CoerceJavaToLua (new Vector2(3, 5));


它会返回什么,以及如何访问lua中的值?我是否像这样传递返回的值:

globals.load(CoerceJavaToLua(new Vector2(3, 5)));

最佳答案

它将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


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

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

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

关于java - LuaJ-CoerceJavaToLua对Java对象做什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33165577/

10-13 04:37