Java 如何使我的菜单屏幕切换到游戏屏幕?
当我运行应用程序时,我的菜单屏幕显示,但当我单击屏幕开始玩游戏时,游戏开始玩,但菜单屏幕仍然覆盖着游戏。我知道这一点,因为游戏有音乐播放。我还打算在将来添加一个闪屏,但我现在不担心。我是新手,所以请尽可能地解释清楚。下面是实现这一点的3个类Java 如何使我的菜单屏幕切换到游戏屏幕?,java,android,libgdx,Java,Android,Libgdx,当我运行应用程序时,我的菜单屏幕显示,但当我单击屏幕开始玩游戏时,游戏开始玩,但菜单屏幕仍然覆盖着游戏。我知道这一点,因为游戏有音乐播放。我还打算在将来添加一个闪屏,但我现在不担心。我是新手,所以请尽可能地解释清楚。下面是实现这一点的3个类 public class SlingshotSteve extends Game { public SpriteBatch batch; public BitmapFont font; public void create() { batch = new
public class SlingshotSteve extends Game {
public SpriteBatch batch;
public BitmapFont font;
public void create() {
batch = new SpriteBatch();
//Use LibGDX's default Arial font.
font = new BitmapFont();
this.setScreen(new Menu(this));
}
public void render() {
super.render(); //important!
}
public void dispose() {
batch.dispose();
font.dispose();
}
}
这是主菜单屏幕
public class Menu implements Screen {
final SlingshotSteve game;
OrthographicCamera camera;
public Menu(final SlingshotSteve gam) {
game = gam;
camera = new OrthographicCamera();
camera.setToOrtho(false, 800, 480);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0.2f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
game.batch.setProjectionMatrix(camera.combined);
game.batch.begin();
game.font.draw(game.batch, "Welcome to Slingshot Steve!!! ", 100, 150);
game.font.draw(game.batch, "Tap anywhere to begin!", 100, 100);
game.batch.end();
if (Gdx.input.isTouched()) {
game.setScreen((Screen) new GameScreen(game));
dispose();
}
}
这是游戏屏幕
public class GameScreen implements Screen {
final SlingshotSteve game;
OrthographicCamera camera;
// Creates our 2D images
SpriteBatch batch;
TextureRegion backgroundTexture;
Texture texture;
GameScreen(final SlingshotSteve gam) {
this.game = gam;
camera = new OrthographicCamera(1280, 720);
batch = new SpriteBatch();
Texture texture = new Texture(Gdx.files.internal("background.jpg"));
backgroundTexture = new TextureRegion(texture, 0, 0, 500, 500);
Music mp3Sound = Gdx.audio.newMusic(Gdx.files.internal("rain.mp3"));
mp3Sound.setLooping(true);
mp3Sound.play();
}
public void render() {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(backgroundTexture, 0, 0);
batch.end();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void dispose() {
batch.dispose();
texture.dispose();
}
不确定,但我认为游戏屏幕上的渲染方法没有被调用。必须实现使用增量时间作为参数的方法renderfloat delta
替换
与
除了我的回答。您可能应该@Override游戏屏幕上的渲染功能。出现错误。它说要我把它改回render方法。出错了,说要我去掉覆盖。
public void render() {
// your code
}
public void render(float delta) {
// your code
}