我目前正在使用libgdx开发一款Android游戏,并希望通过以下屏幕截图实现类似“朋友排行榜”的效果:
[Image source / Run Sackboy!运行,©Media Molecule&索尼电脑娱乐]
libgdx剪切图像并绘制剪切文本并相应地添加ImageButton。
在网上搜索要开始的地方时,我发现handy PDF解释了libgdx中的转换可以使用Matrix4
建模。所以,我做到了这一点并写了一些东西:
// Inside a Screen class
private Matrix4 matrix = new Matrix4().set(new Affine2().shear(0.5f, 0));
public void render(float delta) {
Gdx.gl.glClearColor(0, 1, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.setTransformationMatrix(matrix);
batch.begin();
// Draw texture and bitmapfont
batch.end();
}
这样,SpriteBatch
正确地转换为相应的剪切值。但是,我无法将此剪切变换应用于可点击的ImageButton
。
我查看了this帖子,建议覆盖draw方法并在扩展的Affine2
类中应用Actor
。这样做会导致呈现正确的转换,但是,它不适用,因为我试图扩展ImageButton
而不是简单的Actor
,并且能够在Button上获取用户的输入失去了。
所以我的问题是:有没有办法创建一个类似于Actor#setRotation
的函数,允许ImageButton
根据Affine2
(或Matrix4
)进行剪切,同时保持点击它的能力?