如何使用像素图为数组元素应用随机颜色?-LibGdx

How to apply random colors for array elements with pixmap?-LibGdx

我正在为 class 块创建像素图:

public Pixmap getPixmapCircle(int width, int height, Color color) {
    Pixmap pixmap = new Pixmap(width, height, Pixmap.Format.RGBA8888);
    Pixmap.setBlending(Pixmap.Blending.None);
    pixmap.setColor(color);
    pixmap.fillCircle(60, 60, Constants.BLOCK_RADIUS);
    return pixmap;
}

创建纹理:

public Texture getPixmapTexture(Color color){
    return new Texture(getPixmapCircle(125,125, color));
}

我有这个数组:

    private Array<Block> blocks = new Array<Block>();

这里我想像这样将块数组绘制为精灵:

 for (Block b : blocks){
        for (int i = 0; i < colorArray.length; i++)
        blocksprite = new Sprite(block.getPixmapTexture(new 
   Color(0,5,.1f,1)));
        blocksprite.setPosition(b.getX()-blocksprite.getWidth()/2, b.getY()-
       blocksprite.getHeight()/2);
        blocksprite.draw(batch);
        }

现在我想制作一个包含 10 种颜色的颜色数组。 颜色代码如下:

这个数组应该传递给 getPixmapTexture() 方法,这样我就可以将随机颜色应用于创建的块精灵。

我对创建颜色数组并在块的元素上应用随机索引感到困惑。

我尝试使用十六进制颜色 codes.Some 颜色是 displaying.Some 不是。 为什么会这样?

Libgdx 颜色 class 不处理十六进制颜色,但标准化的 rgba 意味着值从 0 到 1(其中 0 是十六进制的 00,1 是十六进制的 ff),所以要完成你想要的,请按照以下步骤操作:

1 - 将每种颜色转换为标准化 rgb,例如使用 this tool

2 - 创建一个具有标准化颜色的数组,类似于(最后一个数字是 alpha):

Color[] colorArray = {
    new Color(0.5f, 0.4f, 0.3f, 1),
    new Color(0.1f, 0.2f, 0.7f, 1),
    ...
};

3 - 创建块时随机化颜色:

Random random = new Random();

for (Block b : blocks){
    int index = random.nextInt(colorArray.length);
    blocksprite = new Sprite(block.getPixmapTexture(colorArray[index]));
    blocksprite.setPosition(b.getX()-blocksprite.getWidth()/2, b.getY() -blocksprite.getHeight()/2);
    blocksprite.draw(batch);
}