我需要在ShopCell中为一件商品着色(一开始应该是黑色的,购买后才变得正常)。
public class ShopCell extends Group {
private final float WIDTH = 100;
private final float HEIGHT = 150;
private Label label;
public ShopCell(TextureRegion itemTxt, int price) {
this.setSize(WIDTH, HEIGHT);
Image cellBg = new Image(Resource.cellBg);
cellBg.setSize(WIDTH, HEIGHT);
Image item = new Image(itemTxt);
float aspectRatio = item.getWidth()/item.getHeight();
item.setBounds(cellBg.getX() + WIDTH/2-(HEIGHT*0.3f*aspectRatio), cellBg.getY() + HEIGHT/3, HEIGHT*0.6f*aspectRatio, HEIGHT*0.6f);
label = new Label(String.valueOf(price), new Label.LabelStyle(Resource.font, Color.YELLOW));
label.setPosition(cellBg.getX() + WIDTH/2 - label.getWidth()/2, cellBg.getY() + HEIGHT/15);
this.addActor(cellBg);
this.addActor(item);
this.addActor(label);
}
我首先尝试制作Sprite
,将其设为这样并将其添加到Image
:
Sprite sprite = new Sprite(itemTxt);
sprite.setColor(Color.BLACK);
Image item = new Image(sprite);
但是当我这样做时,我的纹理并不适合。
我该如何着色并将其添加到Group
?然后我可以恢复其正常的外观(对于购买的物品)吗?
答案 0 :(得分:0)
Sprite
类具有自己的颜色,因此可以是色调但是当您从Image
创建Sprite
时,只有TextureRegion
Sprite用于构造新的Image对象。
设置图像的颜色而不是有色的精灵:
Image item = new Image(itemTxt);
item.setColor(Color.BLACK);
您还可以在对象上尝试淡入/淡出操作
image.addAction(Actions.fadeOut(2));