【发布时间】:2017-01-14 22:13:08
【问题描述】:
在过去的 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 中弄乱过屏幕。
【问题讨论】: