LibGdx setOrigin()不起作用

时间:2017-02-16 18:58:58

标签: libgdx

我知道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);

触摸前:

enter image description here

触摸后:

enter image description here

1 个答案:

答案 0 :(得分:1)

需要设置组的大小。

but.addAction(Actions.moveBy(but.getWidth(), but.getHeight()));

此代码无效,因为您未设置您的组对象的大小。 but.getWidth()but.getHeight()返回零,因此but组在您执行操作后仍处于相同位置。