2013-03-18 19 views
10

スクロールペインに複数の項目を追加しようとしました。すべての「addActor」関数がサポートされていないことがすぐわかりました。だから私は、私が望むすべての項目(このコードは、スクロール可能なクレジット画面を作るためにまだ追加したい画像が欠落しているテーブルを追加することに行きました...しかし、このアプローチ(現在)では、オーバーフロー、レンダリングScrollPaneは役に立たない。 (私のテキストは、画面の高さが許す範囲でしか表示されず、スクロールできません)。 LibGDXで複数のウィジェットを持つスクロール可能なペインを作る方法は何ですか? (私は、現時点では、AndroidとのWin /林/ Macのプラットフォームを気に。複数のウィジェットを持つLibGDXとScrollPane

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); 

答えて

18

あなたは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の内部でテーブルを設定上のコード

+0

ティsは望みの結果を持っていません。スクローラーをテーブルに追加しています。スクロール側にはテキストのみが残り、テーブル内の他の項目はスクロールしません。 – efaj

+0

申し訳ありませんが、これは正しいです - ish:あなたが使用している適切な "add"の代わりに "addActor"をテーブルに追加しました。あなたは加算を逆転する必要があります:テーブルはスクロールの内側にあります。それから、私はおそらくこれを受け入れたものとしてマークします。 – efaj

+4

レンダリングと境界チェックを適切に行うには、テーブルに 'paneTable.setFillParent(true);がないことが重要です。 – efaj

関連する問題