我想我可能在LibGDX中发现了一个问题,但是在他们的GitHub中打开一个问题之前,我认为在这里讨论它会更好,因为我可能错了。
这就是我发生的事情:
我有一个名为Information
的课程Window
,我会在其中显示有关游戏角色的信息。由于我需要动态更新标签,我认为每次调用Window
时,最好只删除setVisible(false)
内的所有演员。以前工作过。所以这是我的代码:
public class Information extends Window {
private final static String TAG = Information.class.getName();
private Unit calledBy; //Variable to know who is calling
public Information (Skin skin) {
//Setting the attributes
super("Information", skin);
this.setPosition(0, 0);
this.setBounds(this.getX(), this.getY(), Constants.INFORMATION_WIDTH, Constants.INFORMATION_HEIGHT);
this.setVisible(false);
}
@Override
public void setVisible(boolean visible) {
if (!visible){
SnapshotArray<Actor> actors = this.getChildren();
while (actors.size > 0){
actors.get(0).remove();
}
} else {
this.add(new Label("Name: " + getCalledBy().getName(), getSkin()));
this.row();
this.add(new Label("Attack: " + getCalledBy().getAttack(), getSkin()));
this.row();
this.add(new Label("Defense: " + getCalledBy().getDefense(), getSkin()));
this.row();
this.add(new Label("Health: " + getCalledBy().getHealth(), getSkin()));
}
super.setVisible(visible);
}
所以,每当我打电话给setVisible
时,我都会创建或删除演员。问题是我第一次调用这个方法时,它工作得很好,但是第二次和连续几次,除了字符名称之外,它显示为Cell
,没有任何信息。
我调试了Actors
的创建并删除了相同的内容并且所有内容似乎完美无缺。
所以我打算在LibGDX的GitHub中打开一个问题,但如果有人知道为什么会发生这种情况,我会更喜欢它。
提前致谢!
答案 0 :(得分:0)
确定!所以我在回答我自己的问题,以防有人需要它。
感谢Tenfour04的评论,因为它帮助我找到了它。
正确的调用方法是clearChildren()
。这是我的新代码:
public void setVisible(boolean visible) {
if (!visible){
this.clearChildren();
} else {
this.add(new Label("Name: " + getCalledBy().getName(), getSkin()));
this.row();
this.add(new Label("Attack: " + getCalledBy().getAttack(), getSkin()));
this.row();
this.add(new Label("Defense: " + getCalledBy().getDefense(), getSkin()));
this.row();
this.add(new Label("Health: " + getCalledBy().getHealth(), getSkin()));
}
super.setVisible(visible);
}
希望将来可以帮助其他人。