来自NinePatchDrawable的Libgdx Scene2d图像不旋转
问题描述:
我正在使用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图像的构造。有没有人面临同样的问题?
答
调查后,我决定用容器如下:
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方法。
NinePatch不支持旋转。你将不得不继承它并重写它的绘制方法来使它工作。图像仅支持实现TransformDrawable的Drawable上的旋转(其中TextureRegionDrawable是唯一的,除非您创建自己的)。 – Tenfour04 2014-12-02 01:29:47
在这些情况下,它也可能有助于将其封装在表中,对其使用setTransform(true),并旋转表。 – noone 2014-12-02 05:08:16