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

时间:2018-01-03 07:39:43

标签: libgdx

我正在为类Block创建一个Pixmap:

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种颜色的颜色数组。 颜色代码如下:

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

我很困惑创建一个颜色数组,并在块的元素上应用随机索引。

我尝试使用十六进制颜色代码。有些颜色正在显示。有些颜色没有。 为什么会这样?

1 个答案:

答案 0 :(得分:0)

Libgdx Color类不处理十六进制颜色,而是规范化rgba,这意味着值从0到1(其中0表示十六进制为00,1表示十六进制为ff),因此要按照以下步骤操作:

1 - 例如使用this tool

将每种颜色转换为规范化的rgb

2 - 使用标准化颜色创建一个数组,例如(最后一个数字是alpha):

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);
}

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

{{1}}