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

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

以下是显示问题的图片: 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); } } } 

为什么会这样呢?

要么为所有屏幕设置相同的宽度和高度的相机并使用:

 stage.getViewport().setCamera() 

或者只是使用这个命令:

 stage.setViewport(new StretchViewport(width, height));