2013-12-22 92 views
3

我目前正在使用LibGDX創建一個遊戲,現在我正在創建我的標題屏幕。如果將TextButton的寬度設置爲舞臺的寬度,但是在該按鈕的左側至右側單擊的任何位置都允許按下按鈕而不是如果按下按鈕,則我可以使它們居中,如果將TextButton放置在屏幕上時很麻煩你只需點擊按鈕本身。居中文本按鈕到屏幕libgdx

如何讓TextButton以遊戲畫面爲中心並以對方爲中心?我有三個TextButtons(新遊戲,繼續和退出遊戲)。

任何幫助將不勝感激,謝謝!

編輯:

這是我的三個按鈕的代碼。

btnNG = new TextButton("New Game", btnStyle[0]) { 
    { 
     setName("New Game"); 
     addListener(new InputListener() { 
      public boolean touchDown(InputEvent e, float x, float y, int pointer, int button) { 
       g.debugOut(btnNG.getName(), "touchDown?"); 
       return true; 
      } 

      public void touchUp(InputEvent e, float x, float y, int pointer, int button) { 
       g.debugOut(btnNG.getName(), "touchUp?"); 
       //g.switchScreen(new Mainscreen(g)); 
      } 
     }); 
     setWidth(sTitle.getWidth()); 
     setPosition(0, (getHeight() * 2.5f)); 
    } 
}; 

btnContinue = new TextButton("Continue", btnStyle[0]) { 
    { 
     setName("Continue"); 
     addListener(new InputListener() { 
      public boolean touchDown(InputEvent e, float x, float y, int pointer, int button) { 
       g.debugOut(btnContinue.getName(), "touchDown?"); 
       return true; 
      } 

      public void touchUp(InputEvent e, float x, float y, int pointer, int button) { 
       g.debugOut(btnContinue.getName(), "touchUp?"); 
      } 
     }); 
     setWidth(sTitle.getWidth()); 
     setPosition(0, (getHeight() * 1.4f)); 
    } 
}; 

btnExit = new TextButton("Exit Game", btnStyle[0]) { 
    { 
     setName("Exit Game"); 
     addListener(new InputListener() { 
      public boolean touchDown(InputEvent e, float x, float y, int pointer, int button) { 
       g.debugOut(btnExit.getName(), "touchDown?"); 
       return true; 
      } 

      public void touchUp(InputEvent e, float x, float y, int pointer, int button) { 
       g.debugOut(btnExit.getName(), "touchUp?"); 
       //Gdx.app.exit(); 
      } 
     }); 
     setWidth(sTitle.getWidth()); 
     setPosition(0, (getHeight() * .3f)); 
    } 
}; 

這是我迄今爲止,它是中心,但這樣做使得它能夠在任何地方通過按壓屏幕的實際文本的左/右上點擊。

+0

請包括一些正在創建按鈕並將紋理附加到它。 –

+0

我用一些代碼更新了我的帖子。 –

回答

6

我猜sTitle是你的舞臺對象...


,您直接將按鈕添加到舞臺?

如果是這樣,我建議使用表。

Table menuTable = new Table(); 
menuTable.add(btnNG); 
menuTable.row(); 
menuTable.add(btnContinue); 
menuTable.row(); 
menuTable.add(btnExit); 
menuTable.setFillParent(true); 
sTitle.addActor(menuTable); 

注1:
刪除所有的setSize和setPosition兩種上的所有按鈕調用。
刪除其他addActor調用。

注2:
對於高級功能,請參閱TableLayout

+1

謝謝,它工作完美。我不知道LibGDX中的這個特性。 –

+0

很高興它幫助。 :) –

2

你可以把它們放進Table容器,並允許它大約需要對準護理:

Table container = new Table(); 
container.add(btnNG).expandX().center().row(); 
container.add(btnContinue).expandX().center().row(); 
container.add(btnExit).expandX().center().row(); 
// add container to some Stage 

此外,您可以在每個center()之後調用padTop(x)來定義偏移量。 關於表格佈局,請閱讀更多here

+1

中心應該是tablelayout中的deffault吧? – Springrbua

1

將每個按鈕的x設置爲相同,以便它們對齊。將x位置設置爲屏幕寬度的一半減去按鈕寬度的一半 - >(widthOfScreen/2) - (buttonWidth/2)