libgdx中的多色文本

时间:2014-01-23 11:10:45

标签: java libgdx

我发现在夜间构建中,LibGDX中有一个新组件 - TextArea,它是scene2d.ui包的一部分。拥有这样的组件非常好,非常容易使用,但我缺少的是对多色文本的一些支持。

我想在不同颜色的文本中突出显示某些关键字,但我不知道如何使用当前的api。 BitmapFontCache 类中有一种方法:

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

此方法的Javadoc说明如下:

  

设置指定字符的颜色。这可能只在setText(CharSequence,float,float)之后调用,并且每次调用setText时都会重置。

但我不知道如何通过TextArea对象使用它,或者甚至可以这样做。有人试图搞清楚吗?每个提示都将受到赞赏。

2 个答案:

答案 0 :(得分:4)

Libgdx提供颜色标记,必须首先使用

在BitmapFont上启用
font.getData().markupEnabled = true;

使用该字体呈现的文本将查找color markup,其中颜色用括号括起来。每种用过的颜色都被压到堆叠上。

  • 命名颜色(区分大小写):[RED]red [ORANGE]orange
  • 带有可选alpha的十六进制颜色:[#FF0000]red [#FF000033]transparent
  • 一组空括号从堆栈中弹出一种颜色:[BLUE]Blue text[RED]Red text[]Blue text
  • 双括号[[表示转义的括号字符,但在后面跟一个右括号时,它将无法正常工作。

命名颜色在班级com.badlogic.gdx.graphics.Colors中定义,可以添加Colors.put("NAME", color);

答案 1 :(得分:1)

希望这不是很晚。

我没有按照你的方式尝试过,但我敢打赌你必须覆盖setText方法,然后为你想要的特定点设置颜色。 start和end是您在该特定颜色中所需文本的索引。

我在这里实现了一个MulticolorTextArea:https://github.com/AnEmortalKid/MulticolorTextArea/tree/mta-release

希望这会有所帮助。

相关问题