java - Libgdx 屏幕不交换

标签 java screen libgdx

我是 Libgdx 的新手,我写了一个扩展 Game 类的类,问题是 Game 中的 setScreen() 方法没有交换屏幕,因为在我设置屏幕后,我的游戏仍然只渲染其中的内容游戏类的渲染方法,而不是屏幕类的渲染方法。这是代码:

如果运行这段代码,即使我在用户触摸(点击)屏幕时切换屏幕,我也只会看到红屏

class myGame extends Game
{
    GameScreen myOtherScreen;

    public void create() 
    {
       //create other screen
       myMenuScreen = new GameScreen();
    }

    public void render(float delta) 
    {   
        // change screens if screen touched
        if(Gdx.input.justTouched())
            setScreen(myOtherScreen);

            //render red screen
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    }
    .
    . //other methods
    .
}

// ======= Screen Class ========

public class GameScreen implements Screen
{
     @Override
     public void render(float delta) 
     {
            //render green screen
         Gdx.gl.glClearColor(0, 1, 0, 1);
         Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);      
     }
     .
     . //other methods
     .
}

最佳答案

您没有正确使用游戏类。你不应该在那里做任何渲染,那是屏幕的任务。

您应该查看 libgdx screen and game classes wiki page . 用法应该是这样的:

public class MyGame extends Game {
        @Override
        public void create() {
                setScreen(new RedScreen(this));              
        }
 }

并有一个像这样的 RedScreen:

public class RedScreen implements Screen {
    MyGame game; 
    public RedScreen(MyGame game){
            this.game = game;
    }

    public void render(float delta) {
        if(Gdx.input.justTouched())
            game.setScreen(new GreenScreen(game);

         //render red screen
         Gdx.gl.glClearColor(1, 0, 0, 1);
         Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    }
    // ... more screen functions
}

并有一个像这样的 GreenScreen:

public class GreenScreen implements Screen {
    MyGame game; 
    public MainMenuScreen(MyGame game){
            this.game = game;
    }

    public void render(float delta) {
         //render green screen
         Gdx.gl.glClearColor(0, 1, 0, 1);
         Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    }
    // ... more screen functions
}

关于java - Libgdx 屏幕不交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11640962/

相关文章:

java - 无法使用 libgdx-utils 运行 html libgdx

java - RowCallbackHandler 与 JdbcTemplate 的流行

java - 如何实现霍夫变换?

java - 如何防止线程在条件暂时不满足时被终止?

c - ncurses 和 getch - 处理删除和箭头字符

Swift performSegueWithIdentifier 显示黑屏

java - 解析 HashMap Json .fromJson

java - 如何修复 libgdx 项目上的此错误?

java - 如何使用scriptlet提高从oracle 10g到jsp页面的数据传输速度

android - 当锁定屏幕中屏幕方向发生变化时,如何防止我的 Android 应用程序崩溃?