2014-09-20 92 views
1

我的代碼功能齊全,如果我不考慮屏幕大小的問題。但現在我已經嘗試了包括平板電腦在內的多種設備,分辨率非常糟糕。所以我試圖在視口的幫助下保持相同的寬高比。我正在使用舞臺來添加我的按鈕和圖像。我的clicklistener正在對陰影部分和播放按鈕進行響應。由於新帳戶,Stackoverflow不讓我發佈圖片。任何人都可以幫助我理解我做錯了什麼,並確保這段代碼在手機和桌面上運行。Libgdx:Clicklistener無法調整大小

private static final int VIRTUAL_WIDTH = 480; 
private static final int VIRTUAL_HEIGHT = 800; 

public void resize(int width, int height) { 
    // calculate new viewport 

    Vector2 size = Scaling.fit.apply(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, width, height); 
    int viewportX = (int)(width - size.x)/2; 
    int viewportY = (int)(height - size.y)/2; 
    int viewportWidth = (int)size.x; 
    int viewportHeight = (int)size.y; 

    Gdx.gl.glViewport(viewportX, viewportY, viewportWidth, viewportHeight); 
} 

@Override 
public void show() { 

    batch = new SpriteBatch(); 
    stage = new Stage(); 
    camera = new OrthographicCamera(VIRTUAL_WIDTH, VIRTUAL_HEIGHT); 

    camera.setToOrtho(true, VIRTUAL_WIDTH, VIRTUAL_HEIGHT); 

    worldCoords = new Vector3(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, 0); 
    camera.unproject(worldCoords); 
    camera.update(); 


    white = new BitmapFont(Gdx.files.internal("font/white.fnt"), true); 
    white.setScale(1f, -1f); 

    skin = new Skin(); 
    atlas = new TextureAtlas("button.pack.pack"); 
    skin.addRegions(atlas); 
    buttonStyle = new TextButtonStyle(); 
    buttonStyle.up = skin.getDrawable("button"); 
    buttonStyle.down = skin.getDrawable("buttonpressed"); 
    buttonStyle.font = white; 
    buttonStyle.fontColor = Color.BLACK; 




    buttonPlay =new TextButton("Play", buttonStyle); 
    buttonPlay.setWidth(VIRTUAL_WIDTH/3); 
    buttonPlay.setHeight(VIRTUAL_HEIGHT/12); 

    buttonPlay.setPosition(stage.getViewport().getRightGutterWidth(), stage.getViewport().getWorldHeight()/2); 


    buttonPlay.addListener(new ClickListener(){ 

     @Override 
     public void clicked(InputEvent event, float x, float y){ 

      ((Game) Gdx.app.getApplicationListener()).setScreen(new MainFlow(g)); 

     } 
    }); 

    Gdx.input.setInputProcessor(stage); 


    Image img = new Image(new Texture(Gdx.files.internal("Optimized-BG_2.png"))); 
    img.setFillParent(true); 


    stage.addActor(img); 
    stage.addActor(buttonPlay); 


} 

@Override 
public void render(float delta) { 

    camera.update(); 
    batch.setProjectionMatrix(camera.combined); 

    Gdx.gl.glClearColor(0, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    stage.act(); 
    stage.draw(); 

} 
+0

視口類做你想要的一切。 。https://github.com/libgdx/libgdx/wiki/Viewports – 2014-09-20 05:55:41

回答

2

我不明白你想要什麼,但在第一次嘗試更新的階段,你的大小調整方法,讀libgdx docs

stage.getViewport().update(width, height, true);