2017-02-16 78 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