2013-03-18 32 views
10

Cố gắng thêm nhiều mục vào một scrollpane Tôi nhanh chóng nhận thấy rằng tất cả các hàm "addActor" đều không được hỗ trợ. Vì vậy, tôi đã đi với việc thêm một bảng với tất cả các mục tôi muốn (mã này bỏ lỡ một hình ảnh mà tôi vẫn muốn thêm) để tạo màn hình tín dụng có thể cuộn được ... nhưng cách tiếp cận này (hiện tại) không cho phép tràn, hiển thị ScrollPane vô dụng. (Văn bản của tôi chỉ hiển thị theo chiều cao của màn hình cho phép và không thể cuộn được). Cách tạo một ngăn có thể cuộn với nhiều tiện ích trong LibGDX là gì? (Tôi chỉ quan tâm đến nền tảng Android và Win/Lin/Mac vào lúc này.LibGDX và ScrollPane với nhiều tiện ích

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

Trả lời

18

Nếu bạn muốn đặt nhiều mục vào ScrollPane bạn chỉ cần đặt một bảng vào nó và gọi thêm() cho mỗi tiện ích mà bạn muốn đưa vào ScrollPane

Dưới đây là một ví dụ về làm thế nào để làm cho các khoản tín dụng của bạn cuộn:.

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() {} 
} 

Edit:. thêm mã trên thiết lập một bảng bên trong một ScrollPane

+0

Thị s không có kết quả mong muốn. Bạn đang thêm scroller vào bảng. Cuộn giấy vẫn chỉ có văn bản và các mục khác trong bảng không cuộn. – efaj

+0

Được rồi, nhưng điều này là đúng-ish: Tôi đã thêm vào bảng với "addActor" thay vì "thêm" thích hợp mà bạn đang sử dụng. Bạn chỉ cần đảo ngược các phần bổ sung: Bảng đi vào bên trong cuộn, không phải theo cách khác. Sau đó, tôi có thể sẽ đánh dấu điều này là được chấp nhận. – efaj

+4

Để kiểm tra kết xuất và giới hạn đúng, điều quan trọng là bảng KHÔNG có 'paneTable.setFillParent (true);' – efaj

Các vấn đề liên quan