2017-04-08 9 views
0

私のゲームには2つのテーブルがあります。最初のテーブルのセルをタップすると、矢印の頭を2番目のテーブルのテーブルセルに移動できるように、私の指に続く矢印を描きたい。私は最初のセルと最後のセル(矢印が始まった場所と矢印が終了した場所)を知ることができる必要があります。ユーザーが画面から指を離して、それが表のセルにない場合は、何も起こりません。開始アクターから別のアクターに指をたどる矢印を描く方法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)); 
    } 

どうすればよいですか?

答えて

0

希望すると便利です。

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

あなたがテーブルからテーブルへの両方向が必要な場合は、すべてのActorためtouchUptouchDownイベントを設定し、開始と終了の俳優の所有者が誰であるかをチェックする必要があります。

+0

質問は、ユーザーの指に続き、最初の俳優から始まる矢印を描く方法に関するものでした。 – Andy

+0

本当ですか? 'DragListener'と 'DragStart | Stop'メソッドを使うだけです – AntNat

関連する問題