2014-10-13 1 views
3

Я новичок в Libgdx, но с опытными знаниями в Android. Я могу разместить текстуру в центре экрана. Но когда дело доходит до bitmapfont со строкой «Уровень 1», я не могу определить ширину строки, и поэтому я не могу разместить ее в центре экрана.Libgdx - размещение шрифта растрового изображения в центре экрана

Не могли бы вы мне помочь найти ширина/высота Bitmapfont, которая имеет строку «Level 1»

+4

возможного дубликата [Как получить строковый Ширин в Libgdx?] (Http: // StackOverflow. ком/вопросы/16600547/как-получить струну ширину-в-libgdx) – dawez

ответ

5

font.getBounds() больше не работает, поэтому ответ должен быть обновлен.

Вы можете использовать следующее:

GlyphLayout glyphLayout = new GlyphLayout(); 
String item = "Example"; 
glyphLayout.setText(font,item); 
float w = glyphLayout.width; 

и использовать ш к центру относительно позиции

-1

Вы должны попытаться использовать также расширение FreeType по Libgdx, он будет решать все ваши формат шрифта проблемы.

Если вы хотите нарисовать текст в своей игре, вы обычно используете BitmapFont. Однако есть недостаток: BitmapFonts полагаются на изображение, поэтому вам нужно масштабировать их, если вы хотите другой размер, который может выглядеть уродливым.

Вы могли бы просто сохранить BitmapFont самого большого размера, необходимого в вашей игре, и вам никогда не придется увеличивать масштаб, просто вниз, правильно? Ну, это правда, но такой BitmapFont может легко занимать в два раза больше места на вашем жестком диске, чем соответствующий TrueType Font (.ttf). Теперь представьте, что вы должны отправить все свои большие битмапфоны с вашей игрой, и ваша игра использует десять разных шрифтов ... на устройстве Android.

Решение вашей проблемы является GDX-FreeType расширение:

  • корабль только легкие .ttf файлы с игрой
  • генерировать BitmapFont нужного вам размера на лету
  • пользователя может поставить свои собственные шрифты в вашу игру

цитирует: https://github.com/libgdx/libgdx/wiki/Gdx-freetype

0

Вы можете получить ширину строки, проведенной с Bitmapfont таким образом:

font.getBounds(<String>).width; 

Чтобы нарисовать его в центре экрана (с помощью камеры) будет выглядеть так:

int level = 1; 
String s = "Level "+level; 
font.draw(batch, s, camera.viewportWidth/2F-font.getBounds(s).width/2F, camera.viewportHeight()/2F);