LibGDX scene2D-可以使用swapActor更改表中的位置吗?

LibGDX scene2D-可以使用swapActor更改表中的位置吗?,libgdx,scene2d,Libgdx,Scene2d,我想交换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();

我想交换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”

有没有另一种简单的方法来交换表中的两个单元格或参与者(意思是交换位置)?

看看 " API文档中的public Cell getCell(T actor)”方法

现在看一下单元格文档:


您可以获取每个单元格实例中的Actor实例,然后使用常规的旧交换方法交换它们。使用Cell.getActor和Cell.setActor。简单的豌豆

我遇到了与您完全相同的问题和方法,在修补了一段时间后,我发现该表。如果您不调用layout,swapActor工作得非常好

一旦您查找了源代码,这是有意义的。似乎layout()将以前删除的参与者重新分配到其原始位置


哦,添加一个scene2d动作会让它看起来非常漂亮:)

你能不能只使用一个矢量2来保持每个精灵的x和y位置,并简单地在渲染之间切换值?如果他们坐在桌子上,我不会更改每个精灵的x和y。不知道会发生什么,因为桌子会为你设定位置。嗨,你找到解决方案了吗?