1

好的,所以我有一个启用了标记的位图字体。问题是,我需要为整个文本字符串设置全局 alpha 值,而不需要为每个颜色代码设置单独的 alpha 值。

例如,我有...

“[#0000ff]这是蓝色的,[#990000]这是红色的”

我希望字体文本通过设置 alpha 值淡入背景。有没有办法做到这一点,而无需手动解析颜色代码并将 alpha 值粘贴到括号中?

我也试过用 来添加自定义颜色Colors.put(..),但这真的很笨拙,因为我必须为我正在使用的每种颜色以及我正在绘制的每一行文本设置 alpha 值。

4

1 回答 1

2

您需要使用 BitmapFontCache 类。

例如,假设您的代码当前看起来像这样......

    font.drawWrapped(batch, text, x, y, wrapWidth, alignment);

将其替换为以下内容,您可以按照您需要的方式控制 alpha...

    BitmapFontCache cache = font.getCache();
    cache.clear();
    TextBounds bounds = cache.addMultiLineText(text, x, y, wrapWidth, alignment);

    // This is the useful bit!
    cache.setAlphas(alphaTransparency); 

    cache.draw(batch);

注意 - 如果您使用的是距离场字体,那么大多数人为它们使用的着色器不支持 alpha,但很容易修复它。如果你遇到这个问题,请告诉我。

于 2015-11-16T16:09:00.753 回答