libgdx - Transform/Shear 图片按钮
libgdx - Transform/Shear ImageButton
我目前正在使用 libgdx 开发一个 Android 游戏,并希望获得类似于以下屏幕截图中的 "friends leaderboard" 的效果:
[Image source / 运行 麻布小子! 运行, © Media Molecule & Sony Computer Entertainment]
其中 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
.
我查看了 post,它建议覆盖 draw 方法并在扩展的 Actor
class 中应用 Affine2
。这样做会导致呈现正确的转换,但是,它不适用,因为我正在尝试扩展 ImageButton
而不是简单的 Actor
,以及获取用户在 Button 上的输入的能力丢了。
所以我的问题是:有没有办法创建一个类似于 Actor#setRotation
的函数,它允许 ImageButton
根据 Affine2
(或 Matrix4
), 同时保持点击的能力?
在网上搜索了几个小时后,我认为这是不可能的。我没有这样做,而是剪掉 Spritebatch
并单独留下 ImageButton
,使用 this page 作为指导。
我目前正在使用 libgdx 开发一个 Android 游戏,并希望获得类似于以下屏幕截图中的 "friends leaderboard" 的效果:
[Image source / 运行 麻布小子! 运行, © Media Molecule & Sony Computer Entertainment]
其中 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
.
我查看了 Actor
class 中应用 Affine2
。这样做会导致呈现正确的转换,但是,它不适用,因为我正在尝试扩展 ImageButton
而不是简单的 Actor
,以及获取用户在 Button 上的输入的能力丢了。
所以我的问题是:有没有办法创建一个类似于 Actor#setRotation
的函数,它允许 ImageButton
根据 Affine2
(或 Matrix4
), 同时保持点击的能力?
在网上搜索了几个小时后,我认为这是不可能的。我没有这样做,而是剪掉 Spritebatch
并单独留下 ImageButton
,使用 this page 作为指导。