我还在LibGDX论坛上发布了这个问题。
嘿你好啊!为了我的论文,我正在写一个DSL来描述图片的外观。根据DSL输入,这些图片将由libGDX绘制.到目前为止,jetbrains的MPS (v.3.0)和最新的libGDX-版本已经在使用。我的实际问题是:如何设计我的MPS语言和java-libGDX-图片生成器之间的互连。
Jetbrains的议员没有被广泛传播,但我相信,我的问题可以在不知情的情况下得到解决。在DSL中,生成器被设计为构建一个可以执行的类(公共静态void )。下面是几个启动图片生成的方法调用。把它想象成generatePicture(200 my,150 my,"blue") (它要复杂得多,但我认为这对我的问题并不重要)。
在libGDX中,我有几个启动程序(特别是DesktopLauncher),这些是程序的主要类,它们是启动的。目前,启动程序启动另一个类(我将其命名为"Main"),下面是方法调用。libGDX程序是通过jar工件插入MPS中的,因此它的方法可以在我的DSL中使用。
什么是让我的DSL代码启动我的libGDX-程序的好方案?我必须进行所有这些方法调用并启动发射器。我考虑了一个额外的类来初始化启动程序并进行调用,或者尝试将来自DSL的调用插入jar类中。是否有类似的问题存在,或谁面临这个问题?我相信我会以某种方式使它发挥作用,但我对一个好的、顺利的解决方案感兴趣。
编辑

问题是,我肯定需要DesktopLauncher及其配置来在libGDX内部运行PictureGenerator。
编辑2- first approach

这又是议员们的事了。我考虑用MPS生成器生成Picture类,但是运行Launcher类。这有可能吗?要从解决方案中运行类,需要实现IMainClass,但启动程序不能。启动程序看起来总是一样的。是否有比生成的类更能运行另一个类的功能?
或者在libGDX-站点上:可以合并launcher和Picture类来插入配置吗?
发布于 2016-01-31 13:10:45
好的,我做了,按照我的第二次编辑的想法。
在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包含整个项目(包括核心和桌面)。我希望这能帮助那些想要把议员和libGDX结合起来的人。
发布于 2016-01-19 14:19:33
查看robot_Kaja示例(在MPSSamples.3.3\robot_Kaja中)。Script概念实现了IMainClass接口,使运行该概念的实例成为可能。您可以右键单击jetbrains.mps.samples.Kaja.sandbox解决方案中的任何脚本,然后在弹出菜单中看到一个Run选项。单击它将运行此脚本生成的代码。
在您的示例中,您可能还有一些类似于脚本的顶级概念,该脚本生成于Java (baseLanguage) Main类中。只要让这个概念实现IMainClass,就可以直接从MPS运行它。
https://stackoverflow.com/questions/34875097
复制相似问题