我想在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"如所希望的那样。
还有另一种简单的方法可以在表格中交换两个单元格或演员(意味着交换位置)吗?
答案 0 :(得分:2)
看一下 “ 公共Cell getCell(T actor)“API文档中的方法。
现在看一下Cell docs:
http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/Cell.html
您可以获取每个Cell实例中的Actor实例,然后使用常规的旧交换方法交换它们。使用Cell.getActor和Cell.setActor。十分简单。
答案 1 :(得分:0)
我遇到了和你一样的问题和方法,经过一段时间的修补我发现table.swapActor工作得很好,如果你不调用布局。
一旦查找源代码,这就有意义了。似乎layout()将之前删除的actor重新分配到原始位置。
哦,添加一个scene2d动作让这看起来很漂亮:)