我发现在夜间构建中,LibGDX中有一个新组件 - TextArea
,它是scene2d.ui
包的一部分。拥有这样的组件非常好,非常容易使用,但我缺少的是对多色文本的一些支持。
我想在不同颜色的文本中突出显示某些关键字,但我不知道如何使用当前的api。 BitmapFontCache 类中有一种方法:
public void setColors (Color tint, int start, int end)
此方法的Javadoc说明如下:
设置指定字符的颜色。这可能只在setText(CharSequence,float,float)之后调用,并且每次调用setText时都会重置。
但我不知道如何通过TextArea对象使用它,或者甚至可以这样做。有人试图搞清楚吗?每个提示都将受到赞赏。
答案 0 :(得分:4)
Libgdx提供颜色标记,必须首先使用
在BitmapFont上启用font.getData().markupEnabled = true;
使用该字体呈现的文本将查找color markup,其中颜色用括号括起来。每种用过的颜色都被压到堆叠上。
[RED]red [ORANGE]orange
[#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
希望这会有所帮助。