Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android上使用libgdx扩展到sceen_Java_Android_Libgdx - Fatal编程技术网

Java 在Android上使用libgdx扩展到sceen

Java 在Android上使用libgdx扩展到sceen,java,android,libgdx,Java,Android,Libgdx,我正在使用libgdx为Android创建一个简单的游戏。我谈到了不同设备的不同屏幕尺寸的问题,但还没有找到任何具体的文档来说明如何处理这个问题 我想我应该用正交摄影机?到目前为止,我的代码示例如下: private OrthographicCamera camera; public void create() { batch = new SpriteBatch(); texture = new Texture(Gdx.files.internal("data

我正在使用libgdx为Android创建一个简单的游戏。我谈到了不同设备的不同屏幕尺寸的问题,但还没有找到任何具体的文档来说明如何处理这个问题

我想我应该用正交摄影机?到目前为止,我的代码示例如下:

private OrthographicCamera camera;

public void create() {
        batch = new SpriteBatch();

        texture = new Texture(Gdx.files.internal("data/cube.png"));
        texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);

        camera = new OrthographicCamera(1280, 720);

        sprite = new Sprite(texture);
        sprite.setOrigin(0, 0);
        sprite.setPosition(1280/2, 600);
}

public void render() {
        Gdx.gl.glClearColor(0.204f, 0.255f, 0.255f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        batch.setProjectionMatrix(camera.combined);
        batch.begin();
        sprite.draw(batch);
        batch.end();

}

我走的路线对吗?我没有任何其他设备可供测试,我的模拟器正在给我带来问题。

如果您还没有这样做,您应该将LibGDX版本升级到最新版本1.0.0。在这个版本中,引入了所谓的视口

你可以找到一些截图和代码片段以及你需要知道的一切


基本上,你必须为某种策略做出决定,你的问题听起来像是你对ScreenViewport或StretchViewport感兴趣,然后让它来管理你的相机。

我在libGDX项目中使用的是覆盖调整大小方法,并将正交相机设置为屏幕大小,如下所示,使用名为setToOrthoboolean yDown的内置方法,该方法将摄影机设置为当前大小的中心,如果希望y轴向下或不向下,则该参数将作为一个参数:

@Override
public void resize(int width, int height){
    camera.setToOrtho(false);
} 
但是,这不会改变纹理的大小,如果你想重新缩放纹理,那么我建议不要将它们设置为绝对大小,例如15像素,尝试将它们设置为屏幕大小的百分比

或者,另一种有时更有效的方法是计算出特定尺寸下的正确尺寸,例如800 x 480,然后计算出宽度增加的百分比,并将其应用于精灵,例如:

@Override
public void resize(int width, int height){
    super.resize(width, height);
    camera.setToOrtho(false);

    //The following is if the sprites are normally correct scaled
    //for a screen size of 800 x 480, change to whatever you need
    //They should both be floats and class variables

    widthChange = width / 800;
    heightChange = height / 480;
}

public void render() {
    Gdx.gl.glClearColor(0.204f, 0.255f, 0.255f, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    //Rather than using sprite.draw(batch), use:
    batch.draw(sprite, sprite.x * widthChange, sprite.y * heightChange, sprite.width * widthChange, sprite.height * heightChange);

    batch.end();

}

我最近刚安装了libgdx实际上,我想我有1.0.0。如何检查版本?检查视口类是否存在。不需要其他设备来测试不同的大小。只要使用“调整大小”方法(使用新视口类或手动)更新相机,就可以在桌面构建中调整窗口大小。