【问题标题】:LibGdx setOrigin() not workingLibGdx setOrigin()不工作
【发布时间】:2017-02-17 04:07:27
【问题描述】:

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

触摸前:

触摸后:

【问题讨论】:

    标签: libgdx


    【解决方案1】:

    需要设置组的大小。

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

    此代码不起作用,因为您没有设置组对象的大小。 but.getWidth()but.getHeight() 返回零,因此 but 组在您应用操作后保持在同一位置。

    【讨论】:

    • 谢谢!显然设置演员的大小并将它们添加到组中不会影响组的边界(我认为一个组的边界会自动等于其子项的总和)
    猜你喜欢
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多