2017-02-16 8 views
1

私はsetX/YとsetOriginの違いを知っています。実際にはsetOrigin()を正しく使用しています。私はこのボタンをタッチしながら拡大したい。今はscaleBy()が左下から拡大縮小しているように見え、少し拡大して右に移動します。原点をリセットするか、原点を別の操作で手動で移動しようとしても、明らかな効果はありません。より明確にするために、以下のスクリーンショットを参照してください。タッチした後LibGdx setOrigin()が動作しない

enter image description here

:タッチする前に

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

答えて

1

あなたのグループのサイズを設定する必要があります。

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

グループオブジェクトのサイズを設定していないため、このコードは機能しません。 but.getWidth()but.getHeight()はゼロを返すので、アクションを適用した後には同じ位置に残ります。but

+0

ありがとうございます!明らかに、アクターのサイズを設定してグループに追加しても、グループの境界には影響しません(私はグループが自動的にその子の合計に等しい範囲を持つと考えました) – sam

関連する問題