2016-12-22 55 views
2

我目前工作的一個的StartMenu爲我的第一個機器人比賽中居中並有3個問題,我目前遇到:Libgdx,舞臺犯規適應屏幕和按鈕不表

1)舞臺不適合屏幕。我已經嘗試將不同的視口類型(stretch-,fit,extendviewport)傳遞給舞臺構造器,但沒有一個真正按照我的意圖工作。我也爲視口嘗試了不同的參數(例如數字像480,800和Gdx.graphics.getWidth()),但我無法使菜單分辨率獨立(在s3 mini和華爲P8上嘗試),它要麼轉動太小或太大。

2)設置按鈕不在表格單元中居中。

3)按鈕更改大小。當按下時,它們會填充它們所在的單元格,如何禁用此功能? (ⅰ與JSON-文件中的按鈕皮膚限定,順便說一下,但我懷疑這是原因)

@Override 
public void resize(int width, int height) { 
    stage.getViewport().update(width, height, true); 
} 

@Override 
public void show() { 
    stage = new Stage(new ExtendViewport(Constants.VIEWPORT_GUI_WIDTH, Constants.VIEWPORT_GUI_HEIGHT)); 
    Gdx.input.setInputProcessor(stage); 
    rebuildStage(); 
} 

private void rebuildStage() { 
    skinStartMenu = new Skin(
      Gdx.files.internal(Constants.SKIN_Start_Menu_UI), 
      new TextureAtlas(Constants.Start_Menu_Texture_Atlas)); 

    Table layerControls = buildControlsLayer(); 
    stage.clear(); 
    Stack stack = new Stack(); 
    stage.addActor(stack); 
    stack.setSize(Constants.VIEWPORT_GUI_WIDTH, Constants.VIEWPORT_GUI_HEIGHT); 
    stack.add(layerControls); 
} 

private Table buildControlsLayer() { 
    Table layer = new Table(); 
    // + Play Button 
    btnMenuPlay = new Button(skinStartMenu, "play"); 
    layer.add(btnMenuPlay); 
    btnMenuPlay.addListener(new ChangeListener() { 
     @Override 
     public void changed(ChangeEvent event, Actor actor) { 
      onPlayClicked(); 
     } 
    }); 
    layer.row(); 
    // + Options Button 
    btnMenuOptions = new Button(skinStartMenu, "options"); 
    layer.add(btnMenuOptions); 
    btnMenuOptions.addListener(new ChangeListener() { 
     @Override 
     public void changed(ChangeEvent event, Actor actor) { 
      onOptionsClicked(); 
     } 
    }); 
    if (debugEnabled) layer.debug(); 
    return layer; 
} 

No Button Pressed; Button Pressed

編輯:我通過調整的細胞解決了第一個問題該表,但我仍然沒有問題2)和3)的解決方法。

+0

你真的需要一個堆棧?它使佈局更加複雜。如果您想控制其定位,您必須將堆棧中的每個孩子都包裝在容器中。 – Tenfour04

+0

其實我現在不需要它。但我不認爲這會有所作爲,所以我只是把它留在那裏,以防我將來可能需要它x) – Doflaminhgo

回答

0

好的,我找到了我的問題的根源。我愚蠢導出按鈕的PNG文件的大小不同。這就是爲什麼按鈕時按鈕變得更高。我認爲這是button-widget的一個功能,它是默認啓用的x)。通過簡單地改變包含通過「layer.add(btnMenuPlay).size(273,150);」包含的按鈕的表格單元的大小,解決了舞臺大小的問題。

的的StartMenu現在看起來是這樣的:enter image description here