2014-10-30 3 views
0

В прошлом я сделал некоторый код, чтобы проверить текст, чтобы найти цветовые коды, которые изменят цвет текста. Пример:LibGDX WrappedText, но используя цвета в тексте (java)

Рисунок это: Hello my name&b is john даст это в результате, когда обнажен: Hello my name is john но «Джон» будет синим, так как я использовал & б цветовой код. Я в основном имитирую ansi, но для java.

Теперь я хотел бы обернуть текст точно так же, как и BitMapFont.drawWrapped(...) LibGDX, но по-прежнему использовать цветовые коды. Кто-нибудь знает, как это сделать? Вероятно, я смогу понять это, но я просто хотел узнать, был ли лучший способ, чем мой.

ответ

1

Существует поддержка цветовой разметки: Color Markup Language:

Класс BitmapFontCache поддерживает в струне цветной текст через простой язык разметки.

По умолчанию функция разметки отключена. Используйте способ BitmapFont.setMarkupEnabled(), чтобы включить/выключить его.

Синтаксис разметки очень прост, но все-таки универсален:

  • [имя] Устанавливает цвет по имени. Существует несколько предопределенных цветов, см. Метод Colors.reset() для исчерпывающего списка. Пользователи могут определять свои собственные цвета с помощью методов класса Colors.
  • [#xxxxxxxx] Устанавливает цвет, заданный шестнадцатеричным значением xxxxxxxx, в форме RRGGBBAA, где AA является необязательным и по умолчанию имеет значение 0xFF.
  • [] Устанавливает цвет в предыдущий цвет (вид необязательного конечного тега)
  • [[Выходит из левой скобки.

Обратите внимание, что названия цветов чувствительны к регистру, не могут быть пустыми, не могут начинаться ни с #, ни с [и не могут содержать]. Кроме того, любое появление [в имени цвета не должно быть экранировано.

Для примера кода см. Класс испытаний BitmapFontTest.

+0

wow спасибо, вместо изменения цвета растрового шрифта, я решил просто заменить цветовые коды (& r, & b и т. Д.) На коды libgdx. Благодаря тонну! Также можно изменить, выделен ли текст или нет? – vedi0boy

+0

Nevermind действительно не имеет значения, я решил не использовать это в конце концов. Я работаю над MMO, и если люди пишут недействительный шестнадцатеричный код в чате, это приведет к сбою каждой игры. Я думаю, что раньше у меня было что-то хорошее. В любом случае спасибо! – vedi0boy