2013-01-11 8 views
15

버튼 중심에 텍스트를 배치하는 방법을 알아 내려고했지만 쉽고 다용도로 사용할 수는 없습니다. 나는 그것을 할 수는 있지만 어떤 문자열이 아니라 특정 문자열에서만 작동 할 것입니다. 단추에 어떤 문자열을 가운데 놓는 방법이 있는지 알고 싶습니다. 이 경우 내 버튼은 185x50입니다.Libgdx : 버튼의 각 축에 텍스트를 쉽게 배치 할 수 있습니까?

나는과 같이 화면에이 버튼을 중심으로 할 수 있었다 :

buttonX = WIDTH/2 - (screen.getRegionWidth()/2); 
buttonY = HEIGHT/2 - (screen.getRegionHeight()/2); 

어떤 도움이 많이 주시면 감사하겠습니다. :)

+0

libGDX 스테이지 UI "버튼"을 사용하고 있습니까? 또는 자신의 버튼 클래스? –

답변

48

버전 1.7.1-SNAPSHOT libgdx에 대한 대답 업데이트 :이 작업을 수행하는

가장 쉬운 방법은, libgdx에서 TextButton 클래스를 사용하는 것입니다. TextButton의 텍스트는 기본적으로 중앙에 배치됩니다. 이것은 여전히 ​​작동합니다!

업데이트 예 :

오래된 예 :

이 더 이상 작동

!

당신이 그것을 사용하지 않는 경우와 글꼴의 폭과 높이를 얻을 수 있습니다 :의 새로운 버전

String fontText = ""; 
    fontX = buttonX + buttonWidth/2 - font.getBounds(fontText).width/2; 
    fontY = buttonY + buttonHeight/2 + font.getBounds(fontText).height/2; 
+2

이 답변을 추가하기 만하면 게임의 너비에서 텍스트의 너비를 빼고 2로 나눠서 쉽게 가운데에 맞출 수 있습니다.'fontX = (gameWidth - font.getBounds (fontText) .width)/2' –

+0

내 생각 엔 그들이 API를 찾지 못해서 바뀌 었습니다. –

+0

@AlexKapustian 당신은이 목적으로 glyphlayout (최신 버전의 libgdx에서)을 사용할 수 있습니다. – bytestorm

10

: 그래서 당신이 뭔가를 할 수

font.getBounds("Test text"); 

을 libgdx BitMapFont.getBounds() 함수가 api에 더 이상 존재하지 않습니다. GlyphLayout을 사용하여 바운드를 얻을 수 있습니다. 예를 들어,

BitmapFont font; 
SpriteBatch spriteBatch; 
//... Load any font of your choice first 
FreeTypeFontGenerator fontGenerator = new FreeTypeFontGenerator(
    Gdx.files.internal("myFont.ttf") 
); 
FreeTypeFontGenerator.FreeTypeFontParameter freeTypeFontParameter = 
     new FreeTypeFontGenerator.FreeTypeFontParameter(); 
freeTypeFontParameter.size = size; 
fontGenerator.generateData(freeTypeFontParameter); 
font = fontGenerator.generateFont(freeTypeFontParameter); 

//Initialize the spriteBatch as requirement 

GlyphLayout glyphLayout = new GlyphLayout(); 
String item = "Example"; 
glyphLayout.setText(font,item); 
float w = glyphLayout.width; 
font.draw(spriteBatch, glyphLayout, (Game.SCREEN_WIDTH - w)/2, y); 
관련 문제