如何使用像素图为数组元素应用随机颜色?-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);
}
我正在为 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 种颜色的颜色数组。 颜色代码如下:
我对创建颜色数组并在块的元素上应用随机索引感到困惑。
我尝试使用十六进制颜色 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);
}