【问题标题】:LibGDX Screen Support Sizes in AndroidAndroid 中的 LibGDX 屏幕支持大小
【发布时间】:2014-06-04 18:19:41
【问题描述】:

我正在尝试使用 LibGDX 创建游戏。当我将背景放在我拥有的屏幕中时,我的问题就出现了。为了更容易,我创建了一个基本屏幕(摘要)。在 Desktop 中,屏幕很合适,但在 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());

提前致谢。

【问题讨论】:

  • 您将舞台实例化两次,因此删除了对第一个舞台的所有引用。 stage = new Stage(viewport, missingwords.getSB());stage = new Stage();删除第二行再试一次。
  • 对不起,我注意到了这个错误,但我忘了改!现在,我编辑了我的代码,并使用了 FitViewport,但它出现了“黑条”。我不知道如何处理 Scene2D 来解决这个问题,因为我的批次在 Stage 的控制之下。有什么建议吗?
  • 为什么是 //viewport = new StretchViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());评论了吗?
  • 因为如果我使用 viewport = new StretchViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());在 Android 设备中看起来不太好...我必须使用 800、480
  • @adrianoubk 您应该回答自己的问题并将其标记为已接受。

标签: java android libgdx scene2d


【解决方案1】:

最后我用ScalingViewport“解决”了它。像这样:

viewport = new ScalingViewport(Scaling.stretch, 800, 480);

Scaling.stretch 正如 javadoc 所说:世界被缩放以占据整个屏幕。所以,它不会保持纵横比,但对我来说很好。也许使用大屏幕看起来不对,但我仍在学习,我不知道这是否是最好的解决方案。所以,我希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多