2017-04-12 5 views
0

documentationによれば、ExtendViewportはビューを拡張し、アスペクト比を維持する必要がありますが、実装するときはいつでも、このビューポートIveには電話画面の横に2つのバーがあります。 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

関連する問題