5

libGDXのテーブル内の2つのラベルの位置を入れ替えたいです。これを行うには swapActors を使用できると思いましたが、うまくいきません。

private Stage stage;
private Table table;

public MainScreen() {

    stage = new Stage(new FitViewport(800, 480));
    table = new Table(SkinManagerImpl.getDefaultSkin());
    table.add("A").center();
    table.add("B").center();
    table.setFillParent(true);
    boolean succes=table.swapActor(0, 1);
    Gdx.app.log("", "success:"+succes);
    table.layout();
    stage.addActor(table);
}

@Override
    public void render(float delta) {
        // TODO Auto-generated method stub
        super.render(delta);
        stage.draw();
    }

成功は本当ですが、希望どおりに「BA」ではなく「AB」と表示されます。

テーブル内で 2 つのセルまたはアクターを交換する (位置を交換する) 簡単な方法はありますか?

4

2 に答える 2

3

API ドキュメントの「 public Cell getCell(T actor) 」メソッドを参照してください。

http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Table.html#getCell-T-

Cellのドキュメントを見てみましょう:

http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Cell.html

各 Cell インスタンスにある Actor インスタンスを取得し、通常の古いスワップ メソッドを使用してそれらをスワップできます。Cell.getActor と Cell.setActor を使用します。簡単です。

于 2014-10-27T23:27:53.723 に答える
0

私はあなたとまったく同じ問題とアプローチを持っていましたが、しばらくいじくり回した後、レイアウトを呼び出さない場合、table.swapActor が完全に正常に動作することがわかりました。

ソースコードを調べると、これは理にかなっています。あたかも layout() が以前に削除されたアクターを元の位置に再割り当てするかのように見えます。

ああ、そしてscene2dアクションを追加すると、これは本当に素敵に見えます:)

于 2015-04-07T19:37:12.387 に答える