我正在创建一个菜单(就像那个飞扬的鸟,当你死的时候会弹出播放屏幕)。我创建了一个扩展表的类,我想将表的背景设置为白色。有没有办法做到这一点?
答案 0 :(得分:5)
我发现问题已经解决,但还有其他人要求查看代码,我还无法发表评论。
这是一个类似解决方案的实现,只有一个类可用于实例化(以便以后可以轻松更改表背景颜色):
https://www.snip2code.com/Snippet/2615417
BackgroundColor backgroundColor = new BackgroundColor("white_color_texture.png");
backgroundColor.setColor(2, 179, 228, 255); // r, g, b, a
table.setBackground(backgroundColor);
因此,通过从项目资源中为构造函数提供白色PNG的文件名来创建任意BackgroundColor类(上面链接)的实例(就像@T者Four04在上面的注释中提到的那样)。
如果您不熟悉后一部分,请参阅下面链接的repo,其中可以找到此类PNG文件的示例。
现在使用实例的setColor(红色,绿色,蓝色,alpha)方法,然后使用setBackground(Drawable drawable)方法将实例传递给libGDX表。
这并不是一个完美的解决方案 - 根据需要进行修改。
备份:
答案 1 :(得分:3)
通过对表使用setBackground(Drawable drawable)方法解决了这个问题。我创建了一个匿名的drawable类,并在其中创建了一个sprite,它在匿名类的draw方法中呈现。
答案 2 :(得分:1)
您可以这样做:
Pixmap bgPixmap = new Pixmap(1,1, Pixmap.Format.RGB565);
bgPixmap.setColor(Color.RED);
bgPixmap.fill();
textureRegionDrawableBg = new TextureRegionDrawable(new TextureRegion(new Texture(bgPixmap)));
Table table = new Table();
table.setBackground(textureRegionDrawableBg);
请记住在纹理和像素图上调用dispose()。 `
答案 3 :(得分:0)
对于那些要求提供示例代码的人来说,这是一个简单的实现。 (我刚刚发现了BaseDrawable,事实证明,这种情况非常好!)
public static class ColorDrawable extends BaseDrawable {
private float r, g, b, a;
private Color savedBatchColor = new Color();
public ColorDrawable(float r, float g, float b, float a) {
this.r = r;
this.g = g;
this.b = b;
this.a = a;
}
@Override
public void draw(Batch batch, float x, float y, float width, float height) {
// Save the batch colour as we are about to change it
savedBatchColor.set(batch.getColor());
batch.setColor(r, g, b, a);
// Draw a white texture with the current batch colour
batch.draw(Assets.blankWhite, x, y, width, height);
batch.setColor(savedBatchColor);
}
}
像这样使用它:
// Load a texture region from a texture atlas with a white image
Assets.blankWhite = myTextureAtlas.findRegion("some_white_image");
. . .
// Create a new background drawable with the colour provided
ColorDrawable background = new ColorDrawable(0.7f, 0.9f, 0.9f, 1f);
table.setBackground(background);