我是 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/