2017-04-08 9 views
0

내 게임에 두 개의 테이블이 있습니다. 첫 번째 표의 셀을 탭하면 두 번째 표의 표 셀로 화살표 머리를 이동할 수 있도록 내 손가락을 따라 화살표를 그립니다. 나는 어느 것이 초기 세포이고 어느 것이 마지막 세포인지 알 필요가있다 (화살표가 시작되고 화살표가 끝난 곳). 사용자가 손가락을 화면에서 떼어 내고 테이블 셀에 없으면 아무 일도 일어나지 않습니다.시작 액터에서 다른 액터로 손가락을 따라 화살표를 그리는 방법 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