gpt4 book ai didi

java - 在 LibGDX 中添加多个窗口?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:59 24 4
gpt4 key购买 nike

我想从我的 DekstopLauncher.java 创建多个游戏窗口。第二个应该能够与第一个交互,例如请求一个字符串。

有可能吗?以及如何?

这是我在 DeskopLauncher 类中尝试的:

这是创建第一个窗口:

LwjglApplicationConfiguration configForTiles = new LwjglApplicationConfiguration();
TilePresets tilesWindow = new TilePresets();
LwjglApplication tiles = new LwjglApplication(tilesWindow, configForTiles);

这是第二个

LwjglApplicationConfiguration configForMap = new LwjglApplicationConfiguration();
MapMaker mapWindow = new MapMaker();
LwjglApplication map = new LwjglApplication(mapWindow, configForMap);

只创作一件作品。但如果同时添加两者,它会给我这个错误:

LwjglApplication: Couldn't initialize audio, disabling audio
java.lang.IllegalStateException: Only one OpenAL context may be instantiated at any one time.
at org.lwjgl.openal.AL.create(AL.java:113)
at org.lwjgl.openal.AL.create(AL.java:102)
at org.lwjgl.openal.AL.create(AL.java:206)
at com.badlogic.gdx.backends.lwjgl.audio.OpenALAudio.(OpenALAudio.java:72)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.(LwjglApplication.java:83)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.(LwjglApplication.java:64)
at com.whoplays.mapmaker.desktop.DesktopLauncher.main(DesktopLauncher.java:16)
Exception in thread "LWJGL Application" java.lang.IllegalStateException: From thread Thread[LWJGL Application,5,main]: Thread[LWJGL Application,5,main] already has the context current at org.lwjgl.opengl.ContextGL.checkAccess(ContextGL.java:184)
at org.lwjgl.opengl.ContextGL.forceDestroy(ContextGL.java:241)
at org.lwjgl.opengl.DrawableGL.destroy(DrawableGL.java:130)
at org.lwjgl.opengl.Display$5.destroy(Display.java:834)
at org.lwjgl.opengl.Display.destroy(Display.java:1095)
at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.createDisplayPixelFormat(LwjglGraphics.java:197)
at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setupDisplay(LwjglGraphics.java:174)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:138)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)

最佳答案

基本上,您可以在单独的进程中运行每个窗口(使用答案 here 了解如何实现下面使用的 JavaProcess):

public class Tiles {
public static void main(String[] args) {
LwjglApplicationConfiguration configForTiles = new LwjglApplicationConfiguration();
TilePresets tilesWindow = new TilePresets();
LwjglApplication tiles = new LwjglApplication(tilesWindow, configForTiles);
}
}

Wrapper.java 是主要入口点。这是启动两个窗口的地方:

public class Wrapper {
public static void main(String[] args) {
// Launch mapWindow regularly
LwjglApplicationConfiguration configForMap = new LwjglApplicationConfiguration();
MapMaker mapWindow = new MapMaker();
LwjglApplication map = new LwjglApplication(mapWindow, configForMap);

try {
int res = JavaProcess.exec(Tiles.class); // Where the second window is shown
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

信用警报! 我有一个类似的问题,我在某个地方找到了这个解决方案,但我不记得在哪里。当我找到它时,我会在此处发布源代码。

编辑:感谢给我这个想法的人solution .

关于java - 在 LibGDX 中添加多个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31052775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com