配对libGDX和Jetbrains MPS

时间:2016-01-19 11:03:35

标签: java libgdx mps

我也在LibGDX forums上发布了这个问题。

嘿那里!对于我的论文,我正在编写一个DSL来描述图片的外观。这些图片将由libGDX根据DSL-Input绘制。 到目前为止,Jetbrains MPS(v.3.0)和最新的libGDX版本正在使用中。我的实际问题是:如何设计我的MPS语言和java-libGDX-picture-generator之间的互连。

Jetbrains MPS并没有广泛传播,但我敢肯定,我的问题可以在不知情的情况下解决。 在DSL中,生成器被设计用于构建可以执行的类(public static void main)。这里有几个方法调用来开始生成图片。把它想象为generatePicture(200px,150px,“blue”)(它要复杂得多,但我觉得这对我的问题并不重要)。

在libGDX中我有几个启动器(特别是DesktopLauncher),这些是程序主要类,即启动的类。此时,启动程序启动另一个类(我将其命名为“Main”),这里是方法调用。 libGDX程序通过jar工件插入到MPS中,因此它的方法可以在我的DSL中使用。

让我的DSL代码启动我的libGDX-programm会有什么好处? 我必须进行所有这些方法调用并启动启动器。我想了一个额外的类来初始化启动器并进行调用,或者尝试将来自DSL的调用插入到jar类中。 有没有类似的问题或有人遇到这个问题?我确信我会以某种方式将它带到工作中,但我对一个很好的和顺利的解决方案感兴趣。

修改 Main classes in mps and libgdx 问题是,我确实需要DesktopLauncher及其配置来运行PictureGenerator中的libGDX内容。

编辑2 - 第一种方法 enter image description here 这又是MPS相关的。我想过用MPS生成器生成Picture类,但是运行Launcher类。 这有点可能吗?要从解决方案中运行一个类,它需要实现IMainClass,但是Launcher不能。发射器看起来总是一样的。是否有运行另一个类的功能而不是生成的类?

或者在libGDX-site上:是否可以合并启动器和图片类来插入配置?

2 个答案:

答案 0 :(得分:1)

查看robot_Kaja样本(在MPSSamples.3.3\robot_Kaja中)。 Script概念实现了IMainClass接口,可以运行此概念的实例。您可以右键单击jetbrains.mps.samples.Kaja.sandbox解决方案中的任何脚本,您将在弹出菜单中看到“运行”选项。单击它将运行此脚本的生成代码。

在您的情况下,您可能还有一些类似于Script的顶级概念,它被生成到Java(baseLanguage)Main类中。只需使用此概念实现IMainClass,就可以直接从MPS运行它。

答案 1 :(得分:0)

好的,我按照第二次编辑的想法制作了它。

  • 在MPS中生成一个文件
  • 生成的文件可以执行
  • 使用了libgdx jar文件

在MPS中,我使用内部类

生成以下类
public class DesktopLauncher {
  public static void main(string[] args) {
    LwjglApplicationConfiguration config = new LwgjlApplicationConfiguration();
    new LwjglApplication(new Picture(), config);
  }

  public static class Picture extends ApplicationAdapter {
    public Picture(){}
    PictureGeneratorImpl generator;

    public void create() {
      generator = new PictureGeneratorImpl();
    }

    public void render() {
      generator.generatePicture();
      generator.exit();
    }

    public void dispose() {
      generator.dispose();
    }
  }
}

作为附加信息:我的libgdx jar包含整个项目(包括核心和桌面)。 我希望这可以帮助那些有想法将MPS和libGDX结合起来的人。