0
根据documentationExtendViewport
应该扩展视图并保持宽高比,但是每当我尝试时实现这个viewPort Ive在手机屏幕的边上有两个横条。 (这是示例背景图片,其上带有一些文本和按钮以检查拉伸将如何)。Java libGDX带有ExtendViewport的黑条,使用
代码:
public class Overlap2d extends Game {
public static float ASPECT_RATIO ;
public static final int GAME_SCREEN_WIDTH = 40;
public static final int GAME_SCREEN_HEIGHT = 80;
@Override
public void create() {
ASPECT_RATIO=(float)Gdx.graphics.getWidth()/(float)Gdx.graphics.getHeight() ;
ScreenManager.getScreenManager().init(this);
ScreenManager.getScreenManager().showScreen(ScreenName.MAIN_MENU);
}}
public abstract class AbstractScreen extends Stage implements Screen {
public AbstractScreen() {
super(new ExtendViewport(GAME_SCREEN_WIDTH,GAME_SCREEN_HEIGHT,new OrthographicCamera()));
}
public abstract void buildStage();
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 1, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
super.act(delta);
super.draw();
}
@Override
public void resize(int width, int height) {
getViewport().update(width,height);
}
@Override
public void show() {
Gdx.input.setInputProcessor(this);
}
@Override
public void resume() {}
@Override
public void pause() {}
@Override
public void hide() {}}
public class MenuScreen extends AbstractScreen{
private Texture txtrBg;
public MenuScreen() {
super();
txtrBg = new Texture(Gdx.files.internal("test.png"));
}
@Override
public void buildStage() {
getCamera().position.set(GAME_SCREEN_WIDTH/2, GAME_SCREEN_HEIGHT/2, 0);
Image bg = new Image(txtrBg);
bg.setSize(GAME_SCREEN_WIDTH,GAME_SCREEN_HEIGHT);
bg.setPosition(0,0);
addActor(bg);
}
@Override
public void dispose() {
super.dispose();
txtrBg.dispose();
}}
这是预期的行为,就像文件说。绿色条是额外的(“扩展”)区域,您尚未绘制任何东西。你想要发生什么? – Tenfour04
他们写这个视口避免黑条。 “这是一个使用ExtendViewport的例子,舞台的尺寸为640x480,首先在不改变宽高比的情况下进行缩放,然后增加舞台的较短尺寸以填充屏幕,纵横比没有改变,没有黑条,但舞台在一个方向上可能更长。“ – Expiredmind
是的,但你看到的酒吧是因为你没有在那个区域画任何东西。文档讨论的黑条是无法绘制任何东西的区域。在这种情况下,你的场景被裁剪。 – Tenfour04