2017-04-08 1 views
0

J'ai deux tables dans ma partie. Quand je tape sur l'une des cellules de la première table, je veux dessiner une flèche qui suit mon doigt afin que je puisse déplacer la tête de la flèche vers une cellule de table de la deuxième table. Je dois être capable de savoir quelle était la cellule initiale et quelle était la cellule finale (où la flèche a commencé et où la flèche a fini). Si l'utilisateur enlève le doigt de l'écran et qu'il n'était pas sur une cellule de table, je ne veux rien avoir à faire.Comment dessiner une flèche qui suit le doigt de l'acteur de départ à un autre acteur Libgdx

ArrayList<Actor> myActor = new ArrayList<Actor>(); 
    ArrayList<Actor> anotherActor = new ArrayList<Actor>(); 
    // fill array with my actors 
    Table firstTable = new Table(); 
    for (int i = 0; i < 7; i++) { 
    firstTable.add(myActor.get(i)); 
    myActor.get(i).addListener(new ActorGestureListener() { 
     public void touchDown(InputEvent event, float x, float y, int pointer, int button) { 
      // draw arrow that follows finger 
      } 

     public void touchUp(InputEvent event, float x, float y, int pointer, int button) { 
      // if event finished and was on a cell from the 
      // second table get starting actor and finishing actor 
      // else nothing happens 
      } 
    }); 
    } 
    Table secondTable = new Table(); 
    for (int i = 0; i < 7; i++) { 
    secondTable.add(anotherActor.get(i)); 
    } 

Comment est-ce que je devrais faire ceci?

Répondre

0

Espérons que cela aide.

Actor startFromActor = null; // Variable outside of method 

public void foo() { 
    // smt before 
    ArrayList<Actor> myActor = new ArrayList<Actor>(); 
    ArrayList<Actor> anotherActor = new ArrayList<Actor>(); 
    // fill array with my actors 
    Table firstTable = new Table(); 
    Table secondTable = new Table(); 

    for (int i = 0; i < 7; i++) { 
     final Actor curActor = myActor.get(i); 
     firstTable.add(curActor); 
     curActor.addListener(new ActorGestureListener() { 
      public void touchDown(InputEvent event, float x, float y, int pointer, int button) { 
       if (pointer > 0) return false; // For only one finger 
       startFromActor = curActor; 
       // draw arrow that follows finger 
      } 
     }); 
    } 
    for (int i = 0; i < 7; i++) { 
     final Actor curActor = anotherActor.get(i); 
     secondTable.add(curActor); 
     curActor.addListener(new ActorGestureListener() { 
      public void touchUp(InputEvent event, float x, float y, int pointer, int button) { 
       if (pointer > 0) return false; // For only one finger 
       if (startFromActor != null) { 
        // do something 
        // startActor - actor from first table 
        // curActor - actor from second table 

        startFromActor = null; // do not forget to null-setting 
       } 
      } 
     }); 
    } 
} 

Si vous avez besoin les deux sens de la table à table, vous devez définir touchUp et touchDown événements pour chaque Actor puis vérifier qui est propriétaire pour les acteurs de début et de fin;

+0

La question était plus sur comment dessiner une flèche qui suit les doigts de l'utilisateur et commence à partir du premier acteur. – Andy

+0

Vraiment? Utilisez simplement les méthodes 'DragListener' et 'DragStart | Stop' – AntNat