2016-07-23 1 views
1

J'ai ce tableau:Libgdx supprimer et ajouter une image à partir de cellules

table.add(image1).size(image1.getWidth(), image1.getHeight()); 
table.add().size(image1.getWidth(), image1.getHeight()).row(); 
table.add().size(image1.getWidth(), image1.getHeight()); 
table.add().size(image1.getWidth(), image1.getHeight()); 

que je veux, quand je clique sur la cellule vide, image supprimée de la cellule et ajouter à la cellule cliqué. Par exemple quand j'ai cliqué sur la troisième cellule, retirez image1 de la première cellule et l'ajoutez à la troisième cellule. Comment peut-il le faire?

Mise à jour 2:

J'ai écrit ce code, mais lorsque je clique sur cell1, image1 n'est pas ajouté sur la table et a ajouté à l'écran de droite et cliquez sur CELL0 ne fonctionnent pas.

Group group = new Group(); 
    group.addActor(image1); 
    group.addActor(image2); 
    group.addActor(image3); 
    root.add(group).size(16, 16); 
    root.add(image4).size(image4.getWidth(), image3.getHeight()).row(); 
    root.add(image5).size(image5.getWidth(), image4.getHeight()); 
    root.add(image6).size(image6.getWidth(), image5.getHeight()); 

    stage.addActor(root); 
    stage.setDebugAll(true); 

    root.getChildren().get(1).addListener(new InputListener(){ 
     @Override 
     public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
      root.getCells().get(1).clearActor(); 
      root.getCells().get(0).clearActor(); 
      root.getCells().get(0).setActor(image1); 
      group.clear(); 
      group.addActor(image4); 
      group.addActor(image2); 
      group.addActor(image3); 
      root.getCells().get(1).setActor(group); 
      return true; 
     } 
    }); 

    root.getChildren().get(0).addListener(new InputListener(){ 
     @Override 
     public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
      root.getCells().get(0).clearActor(); 
      root.getCells().get(1).clearActor(); 
      root.getCells().get(1).setActor(image4); 
      group.clear(); 
      group.addActor(image1); 
      group.addActor(image2); 
      group.addActor(image3); 
      root.getCells().get(0).setActor(group); 
      return true; 
     } 
    }); 

Répondre

0

Personnellement, je mettrais un écouteur pour chaque cellule de table qui dégagerait la cellule qui a « image1 » et puis attribuez-lui l'image dans la cellule qui a été cliqué. Quelque chose comme:

table.getChildren().get(0).addListener(new ClickListener( // .get(0-3) 
    Cell<Table> cell = table.getCell(image1); 
    cell.clearActor(); 
    table.getCells().get(0).setActor(image1);    // .get(0-3) 
)); 

Read libgdx's table api page.