我最近开始开发LibGDX应用程序,目前正在开发GUI。但是,我遇到了与Scene2D中的标签有关的问题。 下面的图片应该说千言万语:
正如您所看到的,“分数”这个词是'显示,但它具有每个字符的黑色背景,与背后的黑色背景不一致。
标签本身包含在浅灰色表格中,该表格位于另一个包含上部元素的表格中。该表位于主表中。
最初,我认为背景与GLClearColor相关,但是从测试开始,我发现它不是 - 红色GLClearColor仍然会产生黑色背景。此外,我已检查表的颜色包含alpha值1,我尝试更改字体,更改字体颜色以及缩放。我现在已经没想完了。
以下是与标签相关的代码摘录:
private Label score;
score = new Label("Score:", skin);
score.setFontScale(3);
然后将标签添加到' scoreTable':
scoreTable.add(score).expand().fill();
scoreTable.pack();
皮肤的定义如下uiskin.json':
// @formatter:off
{
com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: homestile.fnt } },
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
default: { down: default-round-down, up: default-round, font: default-font},
},
com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: {
default: {
titleFont: default-font
}
},
"com.badlogic.gdx.graphics.Color": {
"white": { "r": 1, "g": 1, "b": 1, "a": 1},
"black": { "r": 0, "g": 0, "b": 0, "a": 1},
},
com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
default: { font: default-font, fontColor: white }
}
}
任何人都可以对这个问题有所了解吗?
编辑:以下是字体文件:
http://i.stack.imgur.com/xDmL1.png (请注意,这是一种白色字体,所以当有白色背景时查看它会使它看起来不可见。相信我,它就在那里)
https://drive.google.com/file/d/0B9Xrus17wYbNUXlOVHFKX2YybjQ/view?usp=sharing
答案 0 :(得分:0)
搜索' blend'在代码中,我找到了答案。它似乎在代码中的其他地方,我称之为:
batch.enableBlending();
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
Gdx.gl.glEnable(GL20.GL_BLEND);
batch.draw(texture,this.getX(),getY());
Gdx.gl.glDisable(GL20.GL_BLEND);
batch.disableBlending();
删除这些行(即Gdx.gl.glDisable(GL20.GL_BLEND);
)后,问题就解决了,文本呈现正确。我假设该阶段默认启用它,但它似乎依赖于LibGDX中GL_BLEND
的初始状态。经验教训。