【问题标题】:LuaJ - What does CoerceJavaToLua do with a Java ObjectLuaJ - CoerceJavaToLua 对 Java 对象做了什么
【发布时间】:2016-01-14 22:00:51
【问题描述】:

如果我这样做

CoerceJavaToLua (new Vector2(3, 5));

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

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

【问题讨论】:

    标签: java scripting embed luaj


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-08-22
      • 1970-01-01
      • 2020-05-24
      • 2016-11-27
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多