2017-04-08 52 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 
       } 
      } 
     }); 
    } 
} 

如果從表中需要兩個方向的表,你應該設置touchUptouchDown事件每Actor再查誰是所有者的開始和結束的演員;

+0

問題在於如何繪製用戶手指後面的箭頭,並從第一個演員開始。 – Andy

+0

真的嗎?只需使用'DragListener'和'DragStart | Stop'方法即可 – AntNat