2017-08-20 2 views
1

Dans mon jeu, je veux dessiner un tableau à 2 colonnes qui contient des carrés (comme des cartes), et sur eux, une image et deux étiquettes (en rang, en haut de la carte l'image, en dessous une étiquette et en dessous l'autre).LibGDX - Groupe d'acteurs sur la table déroulante

Si je ne mets que des images dans mon tableau déroulant, j'obtiens le résultat souhaité, mais maintenant j'essaie d'ajouter l'image et l'étiquette sur l'arrière-plan.

J'ai essayé de définir un groupe d'acteurs et de l'ajouter à la table, mais certains éléments n'apparaissent pas, étendant également la classe Image et dessinant les autres éléments dans la méthode onDraw, mais le texte ne bouge pas l'arrière-plan de la carte lorsque l'utilisateur défile.

Mon code de table est la suivante:

Table scrollTable = new Table(); 
    scrollTable.align(Align.topLeft); 

    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30)) 
      .width(190).height(150).space(30); 
    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30)) 
      .width(190).height(150).space(30); 
    scrollTable.row(); 

    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30)) 
      .width(190).height(150).space(30); 
    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30)) 
      .width(190).height(150).space(30); 
    scrollTable.row(); 

    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30)) 
      .width(190).height(150).space(30); 
    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30)) 
      .width(190).height(150).space(30); 
    scrollTable.row(); 

    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30)) 
      .width(190).height(150).space(30); 
    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30)) 
      .width(190).height(150).space(30); 
    scrollTable.row(); 

    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30)) 
      .width(190).height(150).space(30); 
    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30)) 
      .width(190).height(150).space(30); 
    scrollTable.row(); 

    ScrollPane scroller = new ScrollPane(scrollTable); 
    Table table = new Table(); 
    table.setBounds(33, 10, 410, 500); 
    table.add(scroller).fill().expand(); 

    getStage().addActor(table); 

HighscoreItem est la classe que j'utilise pour afficher un élément de table. Si je remplace cette classe par une classe Scene2D Image régulière, tout s'affiche très bien, mais essayer d'ajouter l'autre image et les deux étiquettes sur l'arrière-plan (en faisant HighScoreItem s'étendre du groupe ou en l'agrandissant) est le problème. Des idées sur la façon de faire cela? Merci.

Répondre

0

Si vous voulez rendre les acteurs les uns sur les autres, vous pouvez utiliser la classe de pile.

Stack stack = new Stack(); 
stack.add(new Image(new Texture("test.png"))); 
stack.add(new Label("label 1", skin)); 
stack.add(new Label("label 2", skin)); 
scrollTable.add(stack); 

Le décalage provient du coin supérieur gauche de la pile.