2016-03-21 13 views
0

1つの表のセルのスクロールペインに複数のアクターを描く:LibGDXは、私は現在、それほどのような完全に機能するスクロールペインを持つ

のみ真ん中の青いボックスはこれだけ、スクロールペインを使用して実装され

Picture of Level Screen

画面の中央部分がスクロールします。スクロールペインがそうのように実装されている:

final Table scrollTable = new Table(); 
    for (int j = 0; j < 60; j+=3) { 
     for (int i = j; i < j+3; i++) { 
      scrollTable.add(items.getValueAt(i).getImage()).center().padRight(80).size(200, 300).padBottom(70); 
     } 
     scrollTable.row(); 
    } 

    final ScrollPane scroller = new ScrollPane(scrollTable); 
    scroller.setScrollingDisabled(true, false); 
    final Table table = new Table(); 
    table.setBounds(0, 300, GameWorld.gameWidth, GameWorld.gameHeight - 600); 

    table.add(scroller); 

    GameScreen.stage.addActor(table); 

私は各ボックスは、テーブル内のセル(私は信じている)と私は、フォントを使用して描画されて行う必要があるで描かれている必要があり問題(多分テクスチャすぎ)そのような箱の上のレベルの数:

Level box with font draw on top

問題はフォントがテーブルの下、ユーザーがスクロールしながら、静的になりますので、私は単純に画面の一番上に描画することはできませんですので、テーブルにスクロールするようにフォントをテーブルに追加する必要がありますが、追加しようとするたびに、別のセルとしてのみ追加できます。すでに描画されているセルの上端。

別のセルの上にセルを描画する方法があるので、1つのセルにフォントを描画してレベルボックスのテクスチャに貼り付けることはできますか?または、この問題のより良い解決策がありますか?

答えて

0

テクスチャの下の新しい行にラベルを追加し、table.add(texture).padTop(-200)を使用して最初の行に表示することができます。私は3行を描画しました。最初はボックス、2番目はレベル番号、3番目はそのレベルで達成された星の数、.padTop()は最後の2行を最初の行に表示して、すべてのように見せました1行

最終結果:

Completed level UI

コードは(おおよそ)以下である:

for (int j = 0; j < LevelFiles.maxLvl; j += 3) { 

     //Level Boxes 
     for (int i = j; i < j + 3; i++) { 
      if(i == j)scrollTable.add(levelBoxes.getValueAt(i).getImage()).center().size(200, 300).padBottom(70); 
      if(i == j+1)scrollTable.add(levelBoxes.getValueAt(i).getImage()).center().size(200, 300).pad(0, 100, 0, 100).padBottom(70); 
      if(i == j+2)scrollTable.add(levelBoxes.getValueAt(i).getImage()).center().size(200, 300).padBottom(70); 
     } 
     scrollTable.row(); 

     //Fonts 
     for (int i = j; i < j + 3; i++) { 
      scrollTable.add(new Label(i+1 + "", l)).padTop(-450); 
     } 
     scrollTable.row(); 

     //Stars 
     for (int i = j; i < j + 3; i++) { 
      if((i+1) <= LevelFiles.maxLvl){ 
       scrollTable.add(threeStars[i]).prefHeight(100).prefWidth(262).padRight(0).padTop(-200); 
      } 
     } 
     scrollTable.row(); 

} 
関連する問題