libgdx中的多色文本

jan*_*ola 5 java libgdx

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

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

public void setColors (Color tint, int start, int end)
Run Code Online (Sandbox Code Playgroud)

这种方法的Javadoc说如下:

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

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

Nic*_*son 8

Libgdx 提供颜色标记,必须首先在 BitmapFont 上启用

font.getData().markupEnabled = true;
Run Code Online (Sandbox Code Playgroud)

使用该字体呈现的文本将查找颜色标记,其中颜色用括号括起来。每种使用的颜色都被推入堆栈。

  • 命名颜色(区分大小写): [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

希望这还不算太晚。

我还没有尝试过你的方法,但我敢打赌你必须覆盖 setText 方法,然后为你想要的特定点设置颜色。start 和 end 是您想要使用该特定颜色的文本片段的索引。

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

希望这会有所帮助。