2013-03-18 29 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中,你只需要簡單地把一個表到它,並調用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的內表增加了代碼

+0

氏s沒有預期的結果。您正在將卷軸添加到表格中。滾動條仍然只有文字,表格中的其他項目不滾動。 – efaj 2013-03-18 21:55:50

+0

好吧,但這是正確的 - ish:我正在用「addActor」添加到表格中,而不是正在使用的正確的「add」。你只需要反轉添加:表格進入滾動,而不是其他方式。那麼,我可能會將其標記爲已接受。 – efaj 2013-03-18 22:02:55

+4

爲了正確渲染和邊界檢查,重要的是該表沒有'paneTable.setFillParent(true);' – efaj 2013-03-18 22:09:26

相關問題