12

スクロールペインに複数のアイテムを追加しようとすると、すべての「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);
4

1 に答える 1

21

複数のアイテムを ScrollPane に配置したい場合は、単純にテーブルをそこに配置し、ScrollPane に配置するウィジェットごとに add() を呼び出す必要があります。

以下は、クレジットをスクロール可能にする方法の例です。

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 内のテーブルの設定に関するコードを追加しました。

于 2013-03-18T18:51:02.730 に答える