2017-05-25 61 views
0

当我从Image从一个白色像素(1×1)Texture获得Drawable时,其工作正常,但无法更改其颜色。为什么?libGDX:从图像可绘制无法更改其颜色

public static Drawable getDrawable(Texture texture, Color color) { 
    Image image = new Image(texture); 
    image.setColor(color); 
    return image.getDrawable(); 
} 

当我把它叫做:

// can't change color!! ==> still white (default) 
getDrawable(pixel, new Color(0, 1f, 0, 0.5f)); 

任何人都可以咨询我:)。

+0

你在第二个代码块中调用了那个方法?在你的第一个例子中,你为图片着色,而不是绘图,所以它保持白色。 – Tenfour04

回答

1

支持自己的颜色的唯一可绘制类型是SpriteDrawable和NinePatchDrawable,这是因为它们包装了Sprites和NinePatches,它们都具有颜色参数。

public static Drawable getTintedDrawable(Texture texture, Color color) { 
    Sprite sprite = new Sprite(texture); 
    sprite.setColor(color); 
    return new SpriteDrawable(sprite); 
} 

如果你有一个现有的TextureRegionDrawable或NinePatchDrawable,你可以调用它的tint()生成你想要的颜色的新绘制对象实例。

+0

我正在寻找'SpriteDrawable'类。谢谢 :) – Crowni