2017-02-16 36 views
1

我知道setX/Y和setOrigin之间的区别,我很确定我实际上正确使用setOrigin()。我想让这个按钮在触摸时放大。现在,scaleBy()似乎是从左下角开始缩放,稍微放大并将其向右移动。重置原点或尝试通过另一个操作手动移动原点没有明显效果。为了更加清晰,请参见下面的截图。LibGdx setOrigin()不工作

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

需要设置组的大小。

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

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

+0

谢谢!显然,设置演员的大小并将其添加到组中并不会影响组的界限(我认为一个组会自动将界限等于其子项的总和) – sam