LibGDX и ScrollPane с несколькими виджетами

Попытка добавить несколько элементов в scrollpane Я быстро обнаружил, что все функции "addActor" не поддерживаются. Итак, я пошел с добавлением таблицы со всеми предметами, которые я хотел (этот код пропускает изображение, которое я все еще хочу добавить), чтобы сделать прокручиваемый экран кредитов... но этот подход (в настоящее время) не позволяет переполнения, рендеринга ScrollPane бесполезен. (Мой текст отображается только для того, что позволяет высота экрана, и не прокручивается). Как создать прокручиваемую панель с несколькими виджетами в LibGDX? (На данный момент меня интересуют только платформы Android и Win/Lin/Mac.

    pane = new ScrollPane(null, skin);
    pane.setFillParent(true);
    paneContent = new Table(skin);
    paneContent.setFillParent(true);
    Label temp = new Label("", skin);
    temp.setAlignment(Align.left, Align.center);
    temp.setText( Gdx.files.internal("licenses/credits.txt").readString("UTF-8") );
    paneContent.addActor(temp);
    pane.setWidget(paneContent);
    stage.addActor(pane);

Ответ 1

Если вы хотите поместить несколько элементов в ScrollPane, вам просто нужно поместить в него таблицу и вызвать add() для каждого виджета, который вы хотите поместить в ScrollPane.

Ниже приведен пример того, как сделать ваши кредиты прокручиваемыми:

public class ScrollTest implements ApplicationListener {
    private Stage stage;

    private static final String reallyLongString = "This\nIs\nA\nReally\nLong\nString\nThat\nHas\nLots\nOf\nLines\nAnd\nRepeats.\n"
        + "This\nIs\nA\nReally\nLong\nString\nThat\nHas\nLots\nOf\nLines\nAnd\nRepeats.\n"
        + "This\nIs\nA\nReally\nLong\nString\nThat\nHas\nLots\nOf\nLines\nAnd\nRepeats.\n";

    @Override public void create() {
        this.stage = new Stage();
        Gdx.input.setInputProcessor(this.stage);
        final Skin skin = new Skin(Gdx.files.internal("skin/uiskin.json"));

        final Label text = new Label(reallyLongString, skin);
        text.setAlignment(Align.center);
        text.setWrap(true);
        final Label text2 = new Label("This is a short string!", skin);
        text2.setAlignment(Align.center);
        text2.setWrap(true);
        final Label text3 = new Label(reallyLongString, skin);
        text3.setAlignment(Align.center);
        text3.setWrap(true);

        final Table scrollTable = new Table();
        scrollTable.add(text);
        scrollTable.row();
        scrollTable.add(text2);
        scrollTable.row();
        scrollTable.add(text3);

        final ScrollPane scroller = new ScrollPane(scrollTable);

        final Table table = new Table();
        table.setFillParent(true);
        table.add(scroller).fill().expand();

        this.stage.addActor(table);
    }

    @Override public void render() {
        this.stage.act();
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        this.stage.draw();
    }

    @Override public void resize(final int width, final int height) {}
    @Override public void pause() {}
    @Override public void resume() {}
    @Override public void dispose() {}
}

Изменить: добавлен код при настройке таблицы внутри ScrollPane.