2014-01-23 2 views
5

Я узнал, что есть новый компонент в LibGDX в ночных сборках - TextArea, который является частью пакета scene2d.ui. Приятно иметь такой компонент, очень простой в использовании, но то, что мне не хватает, - это поддержка многоцветного текста.Разноцветный текст в libgdx

Я хочу выделить некоторые ключевые слова в тексте с другим цветом, но я не знаю, как это сделать с текущим api. Существует один метод в BitmapFontCache класса:

public void setColors (Color tint, int start, int end) 

Javadoc для этого метода говорит следующее:

Устанавливает цвет указанных символов. Это можно вызывать только после setText (CharSequence, float, float) и сбрасывается каждый раз при вызове setText.

Но я не знаю, как использовать его через объект TextArea, или если это возможно сделать так. Кто-то, кто пытался это понять? Каждый намек будет оценен.

+0

Я бы использовал класс BitmapFont напрямую или расширил класс, чтобы делать то, что вам нужно для этого. Вы можете вызвать BitmapFont.setColor (Цвет), чтобы изменить цвет самого шрифта. Существует также новый модуль для чтения шрифтов TTF, если вам нужно масштабировать шрифт в соответствии с переменным размером или чем-то еще. –

ответ

1

Надеюсь, это не слишком поздно.

Я не пробовал это по-своему, но готов поспорить, что вам придется перезаписать метод setText, а затем установить цвета для конкретных точек, которые вы хотите. начало и конец - это индексы для фрагментов текста, которые вы хотите в этом конкретном цвете.

я реализовал MulticolorTextArea здесь: https://github.com/AnEmortalKid/MulticolorTextArea/tree/mta-release

Надеюсь, это выручает.

3

Libgdx предлагает цветовую разметку, которая первая должна быть включена на BitmapFont с

font.getData().markupEnabled = true; 

Текст оказанной с этим шрифтом будет искать color markup, где цвета окружены в квадратных скобках. Каждый использованный цвет помещается в стек.

  • Именованные цвета (чувствителен к регистру): [RED]red [ORANGE]orange
  • Hex цвета с дополнительным альфа: [#FF0000]red [#FF000033]transparent
  • Набор пустых скобок POPS цвет из стека: [BLUE]Blue text[RED]Red text[]Blue text
  • Двойной кронштейн [[ представляет беглый но он не будет работать так, как ожидалось, за которым следует закрывающая скобка.

Именованные цвета определены в классе com.badlogic.gdx.graphics.Colors и могут быть добавлены Colors.put("NAME", color);.

Смежные вопросы