2013-03-18 15 views
10

Bir kaydırma bölmesine birden çok öğe eklemeye çalışıyorum Tüm "addActor" işlevlerinin Desteklenmediğini hemen fark ettim. Bu yüzden, istediğim tüm öğeleri içeren bir tablo ekleyerek (bu kod hala eklemek istediğim bir görüntüyü kaçırıyor) kaydırılabilir bir kredi ekranı yapmak için uğraşıyordum ... ama bu yaklaşım (şu anda) taşmaya izin vermiyor. ScrollPane işe yaramaz. (Metnim sadece ekranın yüksekliğinin izin verdiği yere kadar gösterilir ve kaydırılabilir değildir). LibGDX'te birden çok widget içeren kaydırılabilir bir pencere oluşturmanın yolu nedir? (Ben sadece şu anda Android ve Win/Lin/Mac platformları önemsiyoruz.Birden çok parçacık içeren LibGDX ve 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); 

cevap

18

Eğer ScrollPane içine birden fazla öğe koymak istiyorsanız sadece içine bir masa koymak ve her biri için) (ekleme çağırmanız gerekir Eğer ScrollPane içine koymak istiyorum widget'ı Aşağıda

kaydırılabilir Jeneriklerinizi nasıl bir örnektir.

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

Düzenleme:. bir ScrollPane içinde masa kurup tarihinde eklendi kod

+0

Thi İstenilen sonuca sahip değil. Kaydırıcıyı masaya ekliyorsunuz. Kaydırıcıda hala yalnızca metin var ve tablodaki diğer öğeler kaydırılmıyor. – efaj

+0

Tamam, ama bu doğru-ish: Ben de kullandığınız uygun "add" yerine "addActor" ile tablo ekliyordum. Sadece eklemeleri tersine çevirmeniz gerekiyor: Tablo, dolabın içine giriyor, tersine değil. Sonra, muhtemelen kabul edildi olarak işaretleyeceğim. – efaj

+4

Düzgün oluşturma ve sınırların denetlenmesi için, tablonun 'paneTable.setFillParent (true);' – efaj

İlgili konular