在过去的1-2小时内一直困扰着这个恼人的问题。想知道是否有人可以帮助我。所以我为即将完成的游戏添加了一个启动画面。我正在按照我在网上找到的这个教程http://www.caindev.com/2012/06/04/libgdx-splash-screen-image-tutorial.html这正是我想要的。我需要一个启动画面来加载并保持到用户按下屏幕。我做了教程所要做的所有事情,但是一旦我的启动画面中的图像被加载,当按下图像时,它将不会切换到我的MainMenu屏幕。
这是我的代码:MyGame
package com.jack.mygame;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.jack.MyGame.screens.GameScreen;
import com.jack.MyGame.splash.SplashScreen;
public class MyGame extends Game {
public static int nWidth;
public static int nHeight;
private Game game;
public MyGame() {
game = this;
}
@Override
public void create() {
nWidth = Gdx.graphics.getWidth();
nHeight = Gdx.graphics.getHeight();
setScreen(new SplashScreen(this));
}
@Override
public void render() {
super.render();
}
}
这是我的SplashScreen代码:
package com.jack.mygame.splash;
import com.badlogic.gdx.Gdx;
import static com.badlogic.gdx.Gdx.gl;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.jack.mygame.MyGame;
import com.jack.MyGame.screens.MainMenu;
public class SplashScreen implements Screen {
private Texture logo;
private SpriteBatch spriteBatch;
private MyGame game;
public SplashScreen(MyGame game) {
this.game = game;
}
@Override
public void show() {
logo = new Texture(Gdx.files.internal("logo.png"));
spriteBatch = new SpriteBatch();
}
@Override
public void render(float f) {
handleInput();
GL20 gl = Gdx.graphics.getGL20();
gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
spriteBatch.begin();
spriteBatch.draw(logo, 0, 0, MyGame.nWidth, MyGame.nHeight);
spriteBatch.end();
}
private void handleInput() {
if (Gdx.input.justTouched()) {
System.out.println("clicked");
game.setScreen(new MainMenu(game));
}
}
@Override
public void resize(int i, int i1) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
}
}
最后,我的MainMenu代码:
package com.jack.mygame.screens;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Screen;
import com.jack.mygame.MyGame;
public class MainMenu implements Screen {
private Game game;
public MainMenu(Game game) {
this.game = game;
}
@Override
public void show() {
}
@Override
public void render(float f) {
}
@Override
public void resize(int i, int i1) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
}
}
任何帮助都会很棒。之前没有搞过LibGDX中的屏幕。
答案 0 :(得分:1)
我测试了这段代码,对我来说它有效。唯一的问题是您的MainMenu类不呈现任何视图。因此,当您单击启动画面时,您无法刷新屏幕上显示的内容。例如,在MainMenu类中添加此代码,以清除闪屏徽标中的屏幕:
@Override
public void render(float f) {
GL20 gl = Gdx.graphics.getGL20();
gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}