使用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天时间试图解决这个问题。
答案 0 :(得分:1)
stage = new Stage();
使用将其视口映射到实际屏幕分辨率的相机初始化舞台。如果桌面和设备没有相同的分辨率,他们将不会看起来相同。 尝试将固定值设置到舞台上。使用此:(您可以检查javadoc here
public void setViewport (float width, float height, boolean keepAspectRatio);
例如。使用一些固定值 setViewport(800,600,true);
这也会填满整个屏幕,但无论分辨率如何,都会显示800x600的世界。 (实际上它会是"至少" 800x600,因为keepAspectRation = true可以防止失真)