Каков наилучший способ создать список лидеров Game Center/Play Games с точки зрения пользовательского интерфейса в libGDX Scene2D?

Я пытаюсь создать пользовательский интерфейс для списка лидеров в моем проекте libGDX, используя Scene2D. Мой тест - что-то вроде Google Play Games/ списка лидеров Game Center. Вроде как наложение на существующий экран с возможностью обновления, используя слайд вниз.

У меня нет идей, как обновить данные в уже отрисованном элементе Scene2D. Вот как я создаю таблицу лидеров. Следующая функция вызывается при нажатии кнопки. Теперь, как обновить данные в приведенной ниже таблице лидеров при обновлении? Та же самая проблема возникнет, когда я попытаюсь изменить тип таблицы лидеров с глобального на социальный или за все время на прошлой неделе.

public Table getLeaderboard(com.myapp.models.Leaderboard[] leaderboards){
    Constants.printLog(TAG,"getLeaderboard function");
    //To check layout. Comment later
    Pixmap pm1 = new Pixmap(1, 1, Pixmap.Format.RGB565);
    pm1.setColor(Color.LIGHT_GRAY);
    pm1.fill();
    // Defining Tables
    final Table rootTable = new Table(); // Root table
    rootTable.setFillParent(true);
    Table navigationTable = new Table(); //Table to done/back button
    Table scoresTable = new Table(); //Table to to show scores



    //    Strings to be used
    String doneString = "done";
    TextButton doneButton = new TextButton(getString(doneString),skin,"default");

    navigationTable.add(doneButton);



    for(int i=0; i<leaderboards.length; i++){
      scoresTable.add(renderScoreRow(leaderboards[i].getName(),leaderboards[i].getHighscore())).expandX().fillX();
      scoresTable.row();
    }

    ScrollPane scoreScrollPane = new ScrollPane(scoresTable);




    rootTable.add(navigationTable).expandX().right().row();
    rootTable.add(scoreScrollPane).expandY().expandX().fillX();

    doneButton.addListener(new InputListener() {
      @Override
      public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
        rootTable.setVisible(false);
        rootTable.remove();
        return true;
      }
    });

    //    navigationTable.setDebug(true);
//    scoresTable.setDebug(true);
    rootTable.setBackground(new TextureRegionDrawable(new TextureRegion(new Texture(pm1))));

    return  rootTable;
  }

1 ответ

Вам нужно заново создать таблицу. Нет хорошего способа вставить / отредактировать в таблице scene2d

Другие вопросы по тегам