如何随机改变精灵的颜色

时间:2017-07-26 19:30:48

标签: android colors libgdx

我写了以下代码:

var NucleusPreview;

(function ($) {
    NucleusPreview = function NucleusPreview(source) {
        //ctor stuff
    };

    NucleusPreview.prototype.AdjustCaption = function AddCaption() {
        //caption stuff
    };
})(jQuery);

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

4 个答案:

答案 0 :(得分:2)

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

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

此代码将精灵的白色色调更改为黑色色调

答案 1 :(得分:1)

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

'rand.nextFloat()'给你一个介于0和1之间的浮动,所以你可以像这样创建随机颜色。

答案 2 :(得分:0)

我更喜欢这样使用:

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

答案 3 :(得分:0)

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

stage.getBatch().setColor(your_random_color);
stage.getBatch().draw(your_texture);
stage.getBatch().setColor(1.0f,1.0f,1.0f,1.0f);

请注意,我尝试使用这种方式绘制 TextureRegion ,但我认为这与绘制 Sprite 没有区别。