我有一个像这样的播放按钮;
private void drawPlayButton() {
playButton = new ImageButton(new TextureRegionDrawable(playTexture), new TextureRegionDrawable(pressTexture));
stage.addActor(playButton);
playButton.setPosition(UIConstants.PLAY_X, UIConstants.PLAY_Y, Align.center);
playButton.addListener(new ActorGestureListener() {
@Override
public void tap(InputEvent event, float x, float y, int count, int button) {
super.tap(event, x, y, count, button);
game.setScreen(new GameScreen(game));
}
});
}
我想使用动作为此按钮添加缩放效果。
我对动作并不熟悉,我试过这样的事情;
float duationsec= 0.5f;
playButton.addAction(Actions.sequence(Actions.scaleBy(0.2f,0.2f,duationsec),
Actions.scaleTo(1f, 1f, duationsec)));
img.setOrigin(Align.center);
stage.addActor(playButton);
但这对按钮没有任何影响,同样的代码适用于Image.Is这是因为按钮使用可绘制的纹理?
如何使用动作将此效果赋予按钮?
此外我的代码只工作一次。我在show()中调用它。如果我在render()中调用它,它会以异常方式工作。我希望这个效果永远显示。
有可能实现这一目标吗? 任何帮助将不胜感激。
答案 0 :(得分:1)
出于性能原因,大多数scene2d.ui
组默认情况下transform
设置为false,而ImageButton
是该ui组的一部分,因此您必须使用setTransform(..)
启用转换方法
有关详细信息,请查看
https://github.com/libgdx/libgdx/wiki/Scene2d.ui#rotation-and-scale
float duationsec= 0.5f;
playButton.setOrigin(Align.center);
playButton.setTransform(true); // <-- Enable Transform
stage.addActor(playButton);
playButton.addAction(Actions.sequence(Actions.scaleBy(0.2f,0.2f,duationsec),Actions.scaleTo(1f, 1f, duationsec)));
修改强>
如果您想在用户上放大/缩小Click,请执行以下操作:
playButton.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
playButton.addAction(Actions.sequence(Actions.scaleBy(0.2f,0.2f,duationsec),Actions.scaleTo(1f, 1f, duationsec), Actions.run(new Runnable() {
@Override
public void run() {
game.setScreen(new GameScreen(game));
}
})));
super.clicked(event, x, y);
}
});