【发布时间】:2017-12-31 06:46:58
【问题描述】:
是否可以将纹理的颜色更改为随机颜色,如果可以,我该怎么做? 我认为另一种方法是使用不同颜色的对象创建一个精灵表并随机更改区域,但我不确定。
【问题讨论】:
-
使用
PixMap,您可以进入单个像素来更改它。不确定你到底想要什么。
是否可以将纹理的颜色更改为随机颜色,如果可以,我该怎么做? 我认为另一种方法是使用不同颜色的对象创建一个精灵表并随机更改区域,但我不确定。
【问题讨论】:
PixMap,您可以进入单个像素来更改它。不确定你到底想要什么。
如果您有白色纹理,则只需更改 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
【讨论】:
您无法更改 Texture 的颜色,因为那是在 GPU 内存中。由于它们位于 OpenGL 上下文中,因此您无法随时直接修改它们的像素。您可以使用Pixmap,它是保存在本地内存中的像素图,并带有一些方法来执行所有修改。
您可以通过以下方式实现您的要求:
你可以使用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 颜色再次设置为白色。
或
您可以使用Sprite 保存几何、颜色和纹理信息以绘制二维精灵。
Texture myTex=new Texture("badlogic.jpg");
Sprite sprite=new Sprite(myTex);
sprite.setColor(Color.BLUE);
设置随机颜色只是一个小逻辑,要么你想一次设置随机颜色,要么有一些延迟时间。
【讨论】:
sprite.draw(stage.getBatch()),同时保持你的平局在begin()和end()之间。如果您使用的是scene2d,您应该使用Image 而不是Sprite