我正在为类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种颜色的颜色数组。 颜色代码如下:
这个数组应该传递给getPixmapTexture()方法,这样我就可以将随机颜色应用到创建的块精灵中。
我很困惑创建一个颜色数组,并在块的元素上应用随机索引。
我尝试使用十六进制颜色代码。有些颜色正在显示。有些颜色没有。 为什么会这样?
答案 0 :(得分:0)
Libgdx Color类不处理十六进制颜色,而是规范化rgba,这意味着值从0到1(其中0表示十六进制为00,1表示十六进制为ff),因此要按照以下步骤操作:
1 - 例如使用this tool
将每种颜色转换为规范化的rgb2 - 使用标准化颜色创建一个数组,例如(最后一个数字是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}}