我试图用LibGDX制作游戏。当我把背景放在我拥有的屏幕上时,我的问题出现了。我创建了一个基本屏幕(摘要),以便更容易。在桌面上,屏幕很合适,但在Android中,尝试使用不同的设备时,屏幕无法扩展到全屏。我使用下一个简单的代码解决了这种情况:
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(texture, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
batch.end();
}
这足以在Android设备上全屏显示我的游戏。现在,我想使用Scene2D(我不太了解......)所以我创建了一个舞台,我像演员一样处理背景。这是我的代码。
public class MenuScreen extends BaseScreen {
private FitViewport viewport;
private Stage stage;
private Image imageFondo, imagePrueba;
//private float escala;
public MenuScreen(MissingWords missingwords) {
super(missingwords);
}
@Override
public void show() {
//viewport = new StretchViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
viewport = new FitViewport(800, 480);
stage = new Stage(viewport, missingwords.getSB());
//Gdx.input.setInputProcessor(stage);
/* Crear fondo */
imageFondo = new Image(missingwords.getAM().get("fondo.png", Texture.class));
stage.addActor(imageFondo);
imagePrueba = new Image(missingwords.getAM().get("prueba.png", Texture.class));
imagePrueba.setPosition(50, 50);
stage.addActor(imagePrueba);
}
@Override
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act();
stage.draw();
}
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, true);
}
然而,它不起作用,我不知道我是否以正确的方式使用视口。如何编写此行以便与Scene 2D兼容并支持Android设备?
batch.draw(texture, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
提前致谢。
答案 0 :(得分:2)
最后我解决了#34;它使用ScalingViewport
。像这样:
viewport = new ScalingViewport(Scaling.stretch, 800, 480);
Scaling.stretch
正如javadoc所说:世界被缩放以占据整个屏幕。所以,它并没有保持纵横比,但对我来说是好的。使用大屏幕可能看起来不对,但我还在学习,我不知道这是否是最好的解决方案。所以,我希望这有助于某人。