这是我的启动画面:
package com.badlogic.gdx.screens;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
public class Splash implements Screen {
private SpriteBatch batch;
private Sprite splash;
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0,0,0,1); //sets clear color to black
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); //clear the batch
batch.begin();
splash.draw(batch);
batch.end();
}
@Override
public void resize(int width, int height) {
}
@Override
public void show() {
batch = new SpriteBatch();
Texture texture = new Texture(Gdx.files.internal("badlogic.jpg"));
splash = new Sprite(texture);
splash.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
}
@Override
public void hide() {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void dispose() {
}
}
当我运行应用程序时,启动画面无法显示,它只是直接跳到游戏本身。我知道这一点,所以我不能完全确定问题是什么。我最好的猜测是,启动画面并没有链接到游戏画面,但我不确定。
继续主游戏屏幕,我还没有菜单。
public class SlingshotSteve extends Game {
private OrthographicCamera camera;
// Creates our 2D images
private SpriteBatch batch;
private TextureRegion backgroundTexture;
private Texture texture;
@Override
public void create() {
setScreen(new Splash());
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();
}
@Override
public void render() {
super.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) {
super.resize(width, height);
}
@Override
public void pause() {
super.pause();
}
@Override
public void resume() {
super.resume();
}
@Override
public void dispose() {
batch.dispose();
texture.dispose();
super.dispose();
}
}
答案 0 :(得分:0)
我相信你的问题就在这里
@Override
public void render() {
super.render();
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(backgroundTexture, 0, 0);
batch.end();
}
我相信super.render()
会调用当前屏幕的渲染方法,这意味着你的启动画面确实在绘制自己。但是,由于您之后绘制了背景,因此实际的启动画面不可见。
尝试在渲染方法中注释除super.render();
之外的所有内容,并查看是否无法解决问题。
答案 1 :(得分:0)
这是因为您在render()
课程中为Game
提供了实施,而不是使用单独的Screen
。如果您使用Screen
,则不得在render()
课程中为Game
提供实施。
此外,您应该在构造函数中为Texture
分配SplashScreen
,而不是在show()
方法中。但这只是一个小小的警告。