2014-12-01 49 views
1

我正在使用NinePatchDrawable創建一個圖像,並嘗試使用rotateBy方法簡單地旋轉它,但它不是以某種方式旋轉。我使用下面的代碼片段:來自NinePatchDrawable的Libgdx Scene2d圖像不旋轉

TextureAtlas ninePatchAtlas = game.getAssetsInterface().getTextureAtlas(Constants.GAME_ATLAS); 
AtlasRegion region = ninePatchAtlas.findRegion("drawPatch"); 
NinePatch ninePatch = new NinePatch(region, 59, 59, 59, 59); 
NinePatchDrawable ninePatchDrawable = new NinePatchDrawable(ninePatch); 
Image image = new Image(ninePatchDrawable); 
image.setOrigin(image.getWidth()/2, image.getHeight()/2); 
image.setPosition(200, 400); 
image.setWidth(150); 
image.rotateBy(45); 

旋轉工作,如果我用另一個可繪製的,而不是對NinePatchDrawable圖像的構造。有沒有人面臨同樣的問題?

+0

NinePatch不支持旋轉。你將不得不繼承它並重寫它的繪製方法來使它工作。圖像僅支持實現TransformDrawable的Drawable上的旋轉(其中TextureRegionDrawable是唯一的,除非您創建自己的)。 – Tenfour04 2014-12-02 01:29:47

+1

在這些情況下,它也可能有助於將其封裝在表中,對其使用setTransform(true),並旋轉表。 – noone 2014-12-02 05:08:16

回答

2

調查後,我決定用容器如下:

TextureAtlas ninePatchAtlas = game.getAssetsInterface().getTextureAtlas(Constants.GAME_ATLAS); 
AtlasRegion region = ninePatchAtlas.findRegion("drawPatch"); 
NinePatch ninePatch = new NinePatch(region, 59, 59, 59, 59); 
NinePatchDrawable ninePatchDrawable = new NinePatchDrawable(ninePatch); 
Image image = new Image(ninePatchDrawable); 
image.setWidth(150); 

Container<Image> container = new Container<Image>(image); 
container.fill(); 
container.setSize(image.getWidth(), image.getHeight()); 
container.setOrigin(container.getWidth()/2, container.getHeight()/2); 
container.setTransform(true); 
container.setPosition(image.getX(), image.getY()); 
container.rotateBy(45); 

可以直接加入容器階段或在自定義窗口小部件實現中使用其draw方法。