1

また、この質問をLibGDX フォーラムに投稿しました。

ちょっと、そこ!私の論文では、画像の外観を記述する DSL を書いています。これらの画像は、DSL 入力に従って libGDX によって描画されます。現在、jetbrains MPS (v. 3.0) と最新の libGDX バージョンが使用されています。私の実際の問題は、MPS 言語と java-libGDX-picture-generator の間の相互接続をどのように設計するかです。

Jetbrains MPS は広く普及しているわけではありませんが、私の問題はそれを知らなくても解決できると確信しています。DSL では、ジェネレーターは実行可能なクラスを構築するように設計されています (public static void main)。ここでは、画像生成を開始するためのいくつかのメソッド呼び出しが行われます。generatePicture(200px, 150px, "blue") と考えてください (はるかに複雑ですが、私の問題では重要ではないと思います)。

libGDX には、いくつかのランチャー (特に DesktopLauncher) があります。これらはプログラムのメイン クラスであり、開始されたものです。現時点では、ランチャーは別のクラス (私は「メイン」と名付けました) を開始し、メソッド呼び出しは次のとおりです。libGDX プログラムは jar アーティファクトを介して MPS に挿入されるため、そのメソッドを DSL で使用できます。

私のDSLコードが私のlibGDXプログラムを開始するための良い解決策は何でしょうか? これらすべてのメソッド呼び出しを行い、ランチャーを開始する必要があります。ランチャーを初期化して呼び出しを行うための追加のクラスについて考えたり、DSL からの呼び出しを jar クラスに挿入しようとしたりしました。そこに匹敵する問題や、まさにこの問題に直面した人はいますか? 何らかの形で機能させると確信していますが、素晴らしくスムーズな解決策に興味があります。

編集 mps と libgdx の主なクラス 問題は、PictureGenerator 内で libGDX を実行するために、DesktopLauncher とその構成が必要であると確信していることです。

編集 2 - 最初のアプローチ ここに画像の説明を入力 これも MPS 関連です。MPSジェネレーターでPictureクラスを生成しようと思ったのですが、Launcherクラスを実行します。これはどういうわけか可能ですか?ソリューションからクラスを実行するには、IMainClass を実装する必要がありますが、Launcher では実装できませんでした。ランチャーは常に同じように見えます。生成されたクラスとは別のクラスを実行する機能はありますか?

または libGDX-site: ランチャーと Picture-class をマージして構成を挿入することは可能ですか?

4

2 に答える 2

0

わかりました、2回目の編集のアイデアに従って、作成しました。

  • MPSで1つのファイルが生成されます
  • 生成されたファイルを実行できます
  • 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 を組み合わせるというアイデアを思いついた人の助けになることを願っています。

于 2016-01-31T13:10:45.390 に答える