2013-12-22 91 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)