застрял в этом раздражающем вопросе в течение последних 1 - 2 часов. Интересно, может ли кто-нибудь помочь мне. Поэтому я добавил заставку для моей скоро законченной игры. Я следил за этим учебным пособием, которое я нашел онлайн http://www.caindev.com/2012/06/04/libgdx-splash-screen-image-tutorial.html, и это было именно то, что я хотел. Мне нужен был экран заставки для загрузки и пребывания до тех пор, пока пользователь не нажмет экран. Я сделал все, что сказал учебник, но как только изображение с моего экрана заставки будет загружено, оно не переключится на экран MainMenu, когда оно будет нажато, изображение останется там замороженным.LibGDX - Splash Screen не переключается на экран после его нажатия.
Вот мой код: 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.
Это сработало! Огромное спасибо. Я чувствую себя настолько глупым, что не могу поверить, что забыл добавить это. – Yeah