表格未绘制以下行

时间:2019-05-27 10:46:17

标签: java libgdx scene2d

我试图用一个阶段绘制多个表,到目前为止,它可以在不同行中的两个表上工作,但是当我尝试添加第3或第4个表时却不起作用。我试图单独绘制表格,但它们可以工作,但不能组合使用,这很有趣,因为它们适用于2个表格。...

我试图单独绘制一张桌子,但它们不能同时工作。

public void setupScreen() {
    TextureAtlas menuUi = assetManager.get(Assetdescriptor.backGround);
    TextureRegion backGroundRegion = menuUi.findRegion(Regionnames.backGround);

    Skin menuSkin = assetManager.get(Assetdescriptor.skinUI);


    TextButton team1 = new TextButton("Team 1", menuSkin, "Team1");

    TextButton team2 = new TextButton("Team 2", menuSkin, "Team1");

    TextButton team3 = new TextButton("Team 3", menuSkin, "Team3");

    TextButton team4 = new TextButton("Team 4", menuSkin, "Team4");

    TextButton team5 = new TextButton("Team 5", menuSkin, "Team5");


    TextButton player1 = new TextButton("Spieler 1", menuSkin);
    player1.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            System.out.println("Clicked");
        }
    });

    TextButton player2 = new TextButton("Spieler 2", menuSkin);

    TextButton kiPanzer1 = new TextButton("Ki Panzer 1", menuSkin);

    TextButton kiPanzer2 = new TextButton("Ki Panzer 2", menuSkin);

    TextButton kiPanzer3 = new TextButton("Ki Panzer 3", menuSkin);


    Table teamTable1 = new Table();
    Table teamTable2 = new Table();
    Table teamTable3 = new Table();
    Table teamTable4 = new Table();
    Table teamTable5 = new Table();



    Table TeamOverview = new Table();
    Table spieler1= new Table(); // Spieler 1
    Table spieler2= new Table(); // Spieler 2
    Table Ki3     = new Table(); // Ki Panzer
    Table Ki4     = new Table(); // Ki Panzer
    Table Ki5     = new Table(); // Ki panzer


    spieler1.add(player1);
    spieler2.add(player2);
    Ki3.add(kiPanzer1);
    Ki4.add(kiPanzer2);
    Ki5.add(kiPanzer3);


    TeamOverview.add(team1, team2, team3, team4, team5);

    teamTable1.center();
    teamTable1.add(spieler1,spieler2,Ki3,Ki4,Ki5);
    teamTable2.center();
    teamTable2.add(spieler1,spieler2,Ki3,Ki4,Ki5);
    teamTable3.center();
    teamTable3.add(spieler1,spieler2,Ki3,Ki4,Ki5);
    teamTable4.center();
    teamTable4.add(spieler1,spieler2,Ki3,Ki4,Ki5);



    Table table = new Table();
    table.add(TeamOverview);
    table.add(teamTable1).row();
   -- -These are the tables which dont work---
    table.add(teamTable2).row();
    table.add(teamTable3).row();
    table.add(teamTable4).row();
    -----------------------------------


    table.setFillParent(true);
    table.setBackground(new TextureRegionDrawable(backGroundRegion));
    table.pack();

    stage.addActor(table);

}

没有错误消息,但图形没有变化,预期结果是6行,但只有2行。

1 个答案:

答案 0 :(得分:0)

据我所知,您不允许重复使用同一对象(spieler1,spieler2,Ki3,Ki4,Ki5)。每次将它们添加到不同的表中时,都要创建唯一的实例。

检查com.badlogic.gdx.scenes.scene2d.Group#addActor (该表的扩展名)

    public void addActor (Actor actor) {
        if (actor.parent != null) {
            if (actor.parent == this) return;
            actor.parent.removeActor(actor, false);
        }
        children.add(actor);
        actor.setParent(this);
        actor.setStage(getStage());
        childrenChanged();
    }

一个演员只能有一个父母,前一个被删除。 您的表可能仍然具有所需的所有行,它们只是空的。 您可以使用setDebug(true)查看图形的“线条”。

编辑
无论如何,这个问题似乎是重复的。 请参阅
How to draw several copies of the same actor on one stage at different positions?