使用Stage和Actor的libGDX在桌面和Android手机上产生不同的摄像机角度

时间:2012-12-15 16:58:19

标签: java android camera libgdx

使用Stage和Actor的libGDX在桌面和Android手机上产生不同的摄像机角度。

以下是展示问题的图片:http://brandonyuh.minus.com/mFpdTSgN17VUq

在桌面版上,图像几乎占据了整个屏幕。在Android手机上它只占用了一些屏幕。

这里是代码(不是我的实际项目,但是我解决了问题):

package com.me.mygdxgame2;
import com.badlogic.gdx.*;
import com.badlogic.gdx.graphics.*;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.*;
import com.badlogic.gdx.scenes.scene2d.*;
public class MyGdxGame2 implements ApplicationListener {
    private Stage stage;
    public void create() {
        stage = new Stage();
        stage.addActor(new ActorHi());
    }
    public void render() {
        Gdx.gl.glClearColor(0, 1, 0, 1);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        stage.draw();
    }
    public void dispose() {}
    public void resize(int width, int height) {}
    public void pause() {}
    public void resume() {}
    public class ActorHi extends Actor {
        private Sprite sprite;
        public ActorHi() {
            Texture texture = new Texture(Gdx.files.internal("data/hi.png"));
            texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
            sprite = new Sprite(new TextureRegion(texture, 0, 0, 128, 128));
            sprite.setBounds(0, 0, 300.0f, 300.0f);
        }
        public void draw(SpriteBatch batch, float parentAlpha) {
            sprite.draw(batch);
        }
    }
}

hi.png包含在上面的链接

非常感谢您回答我的问题。我花了3天时间试图解决这个问题。

1 个答案:

答案 0 :(得分:1)

 stage = new Stage(); 

使用将其视口映射到实际屏幕分辨率的相机初始化舞台。如果桌面和设备没有相同的分辨率,他们将不会看起来相同。 尝试将固定值设置到舞台上。使用此:(您可以检查javadoc here

public void setViewport (float width, float height, boolean keepAspectRatio);

例如。使用一些固定值       setViewport(800,600,true);

这也会填满整个屏幕,但无论分辨率如何,都会显示800x600的世界。 (实际上它会是"至少" 800x600,因为keepAspectRation = true可以防止失真)