2017-07-25 108 views
0

是否可以将纹理的颜色更改为随机颜色,如果可能,我该怎么做? 我认为另一种方法是创建一个精灵表与不同颜色的对象并随机更改区域,但我不知道。更改纹理的颜色

+0

通过'PixMap',你可以进入单个像素来改变它。不确定你到底想要什么。 – Madmenyo

回答

0

如果你有一个白色的纹理,那么你可以改变spritebatch的颜色来为图像着色。

batch.setColor(new Color(r,g,b,a)); 
batch.draw(texture, x, y); 
batch.setColor(new Color(1,1,1,1)); // reset to default colour 
0

您不能更改Texture的颜色,因为它在GPU内存中。由于它们在OpenGL上下文中,因此无论何时都不能直接修改它们的像素。你可以使用Pixmap这是一个保存在本地存储器中的像素映射,用一些方法来执行所有的修改。

在其他的方式,您可以使用这些下列方式实现您的要求:

  1. 您可以使用setColor()其超载Batch接口的方法。

    这些是setColor方法的原型。

    public void setColor (Color tint); 
    public void setColor (float r, float g, float b, float a); 
    public void setColor (float color); 
    

    设置SpriteBatch为你的纹理,你想显示彩色的颜色,你画后再次把Spritebatch颜色为白色。

OR

  • 可以使用Sprite保持的几何形状,颜色和纹理绘制2D精灵信息。

    Texture myTex=new Texture("badlogic.jpg"); 
    Sprite sprite=new Sprite(myTex); 
    sprite.setColor(Color.BLUE); 
    
  • 设置颜色随机只是小逻辑,无论你想在一次或一定的延迟时间设置随机颜色。

    +0

    如何在舞台上绘制精灵图形?使用stage.getBatch().draw? – user8340536

    +0

    'sprite.draw(stage.getBatch())',同样在'begin()'和'end()'之间绘制。如果你使用的是scene2d,你应该使用'Image'而不是'Sprite' – Aryan