Libgdx多个屏幕

时间:2014-05-13 16:42:27

标签: user-interface graphics libgdx

感谢我在这个论坛上遇到的其他问题的帮助,我设法推进了我的项目,但又出现了另一个障碍。

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

我应该如何构建屏幕类的示例或一些解释将非常有用。我尝试实现自己的屏幕管理器但是效果不是很好......还有一些指示我应该如何处理屏幕,因为每次从主菜单进入播放或选项菜单时创建屏幕都不是很好理念。任何想法或代码示例或建议都非常感谢。

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

1 个答案:

答案 0 :(得分:7)

假设您有3个屏幕,MainMenuScreen,OptionsScreen,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();