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

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”。

有没有另一种简单的方法在表格内交换两个单元格或角色(即交换位置)?


你不能只使用Vector2来保存每个精灵的x和y位置,然后在渲染之间简单地切换值吗? - Stefan Carlson
如果精灵们已经被放置在表格中,我不会改变它们的x和y属性。因为表格已经为它们设定了位置,这样做会产生意想不到的后果。 - Scuba Steve
你好,你找到解决方案了吗? - Ahmed Ashraf
2个回答

3

0

我曾经遇到过和你一样的问题和方法,经过一番摸索,我发现如果你不调用layout(),table.swapActor就能完美地工作。

当你查看源代码时,这是有道理的。似乎layout()会重新分配之前移除的演员到它们原来的位置。

哦,加上一个scene2d动作会让它看起来非常好 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接