Android 需要关于Libgdx扩展的建议

Android 需要关于Libgdx扩展的建议,android,resize,screen,libgdx,scaling,Android,Resize,Screen,Libgdx,Scaling,这可能是一个正在某处解决的简单问题,但我找不到它。我真的希望有人能引导我走上正确的道路。我的应用程序的设计分辨率为800x480。为了在分辨率更高的设备上保持正确的纵横比,我遵循并设法在更大的屏幕(nexus 7)的两侧获得“黑条”(我使用蓝色进行测试)。然而,舞台似乎没有被缩放以覆盖屏幕。请参见下面的屏幕截图,蓝色是Gdx.gl.glClearColor(0.5f,1,1,1);黑色矩形(800x480)是实际的精灵 我不确定哪里出了错。非常感谢您的帮助。代码如下: private Spri

这可能是一个正在某处解决的简单问题,但我找不到它。我真的希望有人能引导我走上正确的道路。我的应用程序的设计分辨率为800x480。为了在分辨率更高的设备上保持正确的纵横比,我遵循并设法在更大的屏幕(nexus 7)的两侧获得“黑条”(我使用蓝色进行测试)。然而,舞台似乎没有被缩放以覆盖屏幕。请参见下面的屏幕截图,蓝色是Gdx.gl.glClearColor(0.5f,1,1,1);黑色矩形(800x480)是实际的精灵

我不确定哪里出了错。非常感谢您的帮助。代码如下:

private SpriteBatch batch;
private Texture splashTexture;
private Sprite splashSp;
TextureRegion splashTr;
Stage stage;

@Override
public void create() {

    stage = new Stage();

    batch = new SpriteBatch();

    splashTexture = new Texture(Gdx.files.internal("img/splashTexture.png"));
    splashTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear);

    TextureRegion splashTr = new TextureRegion(splashTexture, 0, 0, 800, 480);

    splashSp = new Sprite(splashTr);

    Gdx.app.log("myapp", "Creating game");
}

@Override
public void render() {      
    Gdx.gl.glClearColor(0.5f, 1, 1, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    stage.draw();

    batch.begin();
    batch.draw(splashSp, 0, 0);

    batch.end();
}

@Override
public void resize(int width, int height) {

    Gdx.app.log("myapp", "width:" + width + " height:" + height);
    Vector2 size = Scaling.fit.apply(800, 480, width, height);
    int viewportX = (int)(width - size.x) / 2;
    int viewportY = (int)(height - size.y) / 2;
    int viewportWidth = (int)size.x;
    int viewportHeight = (int)size.y;
    Gdx.app.log("myapp", "viewportWidth:" + viewportWidth + " viewportHeight:" + viewportHeight);
    Gdx.app.log("myapp", "viewportX:" + viewportX + " viewportY:" + viewportY);
    Gdx.gl.glViewport(viewportX, viewportY, viewportWidth, viewportHeight);
    stage.setViewport(800, 480, true);

    Gdx.app.log("myapp", "Resizing game");
}

你需要设置相机和舞台

首先像这样声明摄影机的一个变量

OrthographicCamera camera;
然后在create方法中执行此操作

camera = new OrthographicCamera();
camera.setToOrtho(false, 800, 480);
camera.update();

mystage = new Stage(800, 480, false);
并在“渲染方法”中更新摄影机

camera.update();

对mee来说效果很好。

你需要设置相机和舞台

首先像这样声明摄影机的一个变量

OrthographicCamera camera;
然后在create方法中执行此操作

camera = new OrthographicCamera();
camera.setToOrtho(false, 800, 480);
camera.update();

mystage = new Stage(800, 480, false);
并在“渲染方法”中更新摄影机

camera.update();

你的
舞台
完全独立于精灵的渲染,实际上在这里什么都不做。将
精灵
添加到
舞台
作为
演员
,或者移除
舞台
,使用
摄影机
作为视口,并使用
SpriteBatch.setProjectionMatrix(摄影机.组合)
。您的
阶段
完全独立于精灵的渲染,实际上在这里什么都不做。将
精灵
添加到
舞台
作为
演员
,或者移除
舞台
,在视口中使用
摄像机
,并使用
SpriteBatch.setProjectionMatrix(Camera.combined)
。谢谢Sandep。我以前试过你建议的方法,但没有成功。不过,我已经再次测试了您建议的方法,我想知道为什么它对我不起作用?谢谢Sandeep。我以前试过你建议的方法,但没有成功。然而,我已经再次测试了您建议的方法,我想知道为什么它对我不起作用?