Android 如何随机改变精灵的颜色

Android 如何随机改变精灵的颜色,android,colors,libgdx,Android,Colors,Libgdx,我编写了以下代码: int color = Color.argb8888(255, rand.nextInt(256), rand.nextInt(256), rand.nextInt(256)); stage.getBatch().setColor(color); 使用此代码,我想随机更改精灵的颜色。不幸的是,舞台上所有精灵的颜色都改变了,但我想声明我要给哪个精灵上色。如何改进代码?要更改单个精灵的色调,请使用下面的代码 Sprite mysprite; Texture mytexture;

我编写了以下代码:

int color = Color.argb8888(255, rand.nextInt(256), rand.nextInt(256), rand.nextInt(256));
stage.getBatch().setColor(color);

使用此代码,我想随机更改精灵的颜色。不幸的是,舞台上所有精灵的颜色都改变了,但我想声明我要给哪个精灵上色。如何改进代码?

要更改单个精灵的色调,请使用下面的代码

Sprite mysprite;
Texture mytexture;
mytexture = new Texture("texture.png");
mysprite = new Sprite(mytexture);
mysprite.setColor(Color.WHITE.cpy().lerp(Color.BLACK, .5f));

此代码将雪碧的白色色调更改为黑色色调

我更喜欢这样使用:

final Image image=new Image(new Texture("badlogic.jpg"));
final Color colors[]=new Color[]{Color.YELLOW,Color.RED,Color.CYAN};
image.addAction(Actions.forever(Actions.sequence(Actions.delay(.2f),Actions.run(new Runnable() {
            @Override
            public void run() {
                image.setColor(colors[MathUtils.random(colors.length-1)]);
            }
        }))));
stage.addActor(image);

根据我的经验,您可以将着色器中用作顶点属性的颜色属性设置回正常颜色遮罩,如下所示:

stage.getBatch().setColor(your_random_color);
stage.getBatch().draw(your_texture);
stage.getBatch().setColor(1.0f,1.0f,1.0f,1.0f);
请注意,我尝试了这种方法来绘制纹理区域,但我认为这与绘制精灵没有什么不同

Color color = new Color(rand.nextFloat(), rand.nextFloat(), rand.nextFloat(), 1f);

“rand.nextFloat()”为您提供一个介于0和1之间的浮点值,因此您可以创建这样的随机颜色。

每个参与者都负责在自己的绘制方法中设置批次的颜色。如果不需要着色,请使用Color.WHITE。
Sprite
Stage
配合使用
Image
而不是Sprite不是一个好方法,但是如何更改图像的颜色?使用相同的方法?如果您想随机更改颜色,请将最后一行放在Random()函数中添加一些细节,而不是仅转储代码并执行格式。