5

我想交换 libGDX 表中两个标签的位置。我想我可以使用 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();
    }

成功是真的,但它仍然按要求说“AB”而不是“BA”。

是否有另一种简单的方法来交换表格内的两个单元格或演员(意思是交换位置)?

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.swapActor。

一旦您查看源代码,这就是有意义的。似乎 layout() 将先前删除的演员重新分配到其原始位置。

哦,添加一个 scene2d 动作让这看起来真的很好:)

于 2015-04-07T19:37:12.387 回答