我可以在演员里面设置纹理吗?

时间:2017-07-02 01:59:23

标签: java libgdx textures

我需要在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?然后我可以恢复其正常的外观(对于购买的物品)吗?

1 个答案:

答案 0 :(得分:0)

Sprite类具有自己的颜色,因此可以是色调但是当您从Image创建Sprite时,只有TextureRegion Sprite用于构造新的Image对象。

设置图像的颜色而不是有色的精灵:

Image item = new Image(itemTxt);
item.setColor(Color.BLACK);

您还可以在对象上尝试淡入/淡出操作

image.addAction(Actions.fadeOut(2));