我知道setX / Y和setOrigin之间的区别,我很确定我实际上正在使用setOrigin()。我希望这个按钮在触摸时放大。现在scaleBy()似乎是从左下角缩放,稍微放大并向上和向右移动。重置原点或尝试通过另一个动作手动移动它没有明显的效果。请参阅下面的屏幕截图以获得更清晰的信息。
final Group but = new Group();
//...
//this seems to have no effect
but.setOrigin(but.getWidth()/2, but.getHeight()/2); //center origin for scaling
but.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
//this happens
but.addAction(Actions.scaleBy(.2f, .2f));
//this doesn't
but.addAction(Actions.moveBy(but.getWidth(), but.getHeight()));
return true;
}
//...
});
stage.addActor(but);
触摸前:
触摸后:
答案 0 :(得分:1)
需要设置组的大小。
but.addAction(Actions.moveBy(but.getWidth(), but.getHeight()));
此代码无效,因为您未设置您的组对象的大小。
but.getWidth()
和but.getHeight()
返回零,因此but
组在您执行操作后仍处于相同位置。