2016-07-23 15 views
1

Ich habe diese Tabelle:Libgdx entfernen und hinzufügen Bild von Zellen

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

ich will, wenn ich auf leere Zelle geklickt haben, Bild von der Zelle gelöscht und in die Zelle geklickt hinzuzufügen. Wenn ich beispielsweise auf die dritte Zelle geklickt habe, entferne image1 aus der ersten Zelle und füge es der dritten Zelle hinzu. Wie kann es gehen? 2

Update:

Ich schrieb diesen Code, aber wenn ich auf cell1 klicken, image1 nicht auf dem Tisch und hinzugefügt am rechten Bildschirm und klicken Sie auf ZELLE0 funktionieren nicht hinzugefügt.

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

Antwort

0

Persönlich würde ich einen Listener für jede Tabellenzelle festgelegt, die die Zelle löschen würden, die ‚image1‘ hat und dann das Bild in der Zelle zuweisen, die geklickt wurde. Etwas wie:

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.