2017-04-12 24 views
0

根据documentationExtendViewport应该扩展视图并保持宽高比,但是每当我尝试时实现这个viewPort Ive在手机屏幕的边上有两个横条。 enter image description here(这是示例背景图片,其上带有一些文本和按钮以检查拉伸将如何)。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(); 

}} 
+0

这是预期的行为,就像文件说。绿色条是额外的(“扩展”)区域,您尚未绘制任何东西。你想要发生什么? – Tenfour04

+0

他们写这个视口避免黑条。 “这是一个使用ExtendViewport的例子,舞台的尺寸为640x480,首先在不改变宽高比的情况下进行缩放,然后增加舞台的较短尺寸以填充屏幕,纵横比没有改变,没有黑条,但舞台在一个方向上可能更长。“ – Expiredmind

+1

是的,但你看到的酒吧是因为你没有在那个区域画任何东西。文档讨论的黑条是无法绘制任何东西的区域。在这种情况下,你的场景被裁剪。 – Tenfour04

回答

0
public static final int GAME_SCREEN_WIDTH = 40; 
public static final int GAME_SCREEN_HEIGHT = 80; 

您正在使用的宽度和高度比为1:2,但只有极查看设备在这个比例适合,为什么不试试48和80的视宽,高度。

问题几乎是相同的,所以解释可以适应这里也

https://stackoverflow.com/a/43398153/3445320