Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface Libgdx多屏幕_User Interface_Graphics_Libgdx - Fatal编程技术网

User interface Libgdx多屏幕

User interface Libgdx多屏幕,user-interface,graphics,libgdx,User Interface,Graphics,Libgdx,多亏了在这个论坛上我在其他问题上得到的帮助,我成功地推进了我的项目,但另一个障碍出现在我的路上 在libgdxforjava中实现多个屏幕时遇到问题。我想知道如何实现多个屏幕(一个用于主菜单,一个用于播放,一个用于加载屏幕,…) 举个例子或者解释一下我应该如何构造我的屏幕类会很有帮助。我尝试实现我自己的屏幕管理器,但效果不太好。。。还有一些关于如何处理屏幕的建议,因为每次从主菜单进入播放或进入选项菜单时都要创建屏幕不是一个好主意。非常感谢您的任何想法、代码示例或建议 我现在有一些游戏屏幕,当你渲

多亏了在这个论坛上我在其他问题上得到的帮助,我成功地推进了我的项目,但另一个障碍出现在我的路上

在libgdxforjava中实现多个屏幕时遇到问题。我想知道如何实现多个屏幕(一个用于主菜单,一个用于播放,一个用于加载屏幕,…)

举个例子或者解释一下我应该如何构造我的屏幕类会很有帮助。我尝试实现我自己的屏幕管理器,但效果不太好。。。还有一些关于如何处理屏幕的建议,因为每次从主菜单进入播放或进入选项菜单时都要创建屏幕不是一个好主意。非常感谢您的任何想法、代码示例或建议


我现在有一些游戏屏幕,当你渲染它们时,它们会在屏幕上绘制一些GUI,但是像后退按钮这样的功能不起作用,因为我不知道如何在它们之间建立链接。

假设你有3个屏幕,MainMenuScreen,OptionScreen,GameScreen

首先,您需要在主类中声明它们

看起来像这样

public class MainClass extends Game implements ApplicationListener {

    private GameScreen gameScreen;
    private MenuScreen menuScreen;
    private OptionsScreen optionsScreen;

    @Override
    public void create() {



    }
    setGameScreen()
    {
        gameScreen=new GameScreen(this);
        setScreen(gameScreen);
    }
    setMenuScreen()
    {
        menuScreen=new menuScreen(this);
        setScreen(menuScreen);
    }
    setOptionsScreen()
    {
        optionsScreen=new OptionsScreen(this);
        setScreen(gameScreen);
    }



    @Override
    public void dispose() {

        super.dispose();
    }

    @Override
    public void render() {

        Gdx.gl.glClearColor(1, 1, 1, 1);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

        super.render();
    }

    @Override
    public void resize(int width, int height) {

        super.resize(width, height);
    }

    @Override
    public void pause() {
        super.pause();
    }

    @Override
    public void resume() {
        super.resume();
    }
}
现在,每个屏幕都需要一个MainClass变量和它的构造函数

比如说对于GameScreen类,它将是

public class GameScreen implements Screen{

    private MainClass mainClass;

    public GameScreen(MainClass mc)
    {
        mainClass=mc;
    }
    // your methods (show,render, pause, etc)
}
现在,当你想更改屏幕时,只需在屏幕中使用

mainClass.setMenuScreen();

事实上,你不需要在你的主类中声明它们,我也不建议保留对它们的引用,因为它是不需要的。更改屏幕时,如果需要,只需创建一个新屏幕。我只是保留了一个对游戏屏幕的引用,因为它有点大,需要更多的时间来加载,但是其他的东西在内存中都是垃圾。非常好的方法,我喜欢mainClass处理如此重要的项目。我将有大约5-7个屏幕和一个mainClass.Screen的切换屏幕。仅供参考,Game类已经实现了ApplicationListener接口。我强烈建议您阅读steigert博客,因为它确实解释了这一切。我们将看到,它并不是完全最新的,但它确实向您展示了一些有用的东西,比如屏幕的抽象等等。