2013-05-31 5 views

Trả lời

11

Nếu bạn sử dụng InputProcessor để xử lý đầu vào dựa trên sự kiện, chỉ cần tăng bộ đếm tại touchDown và giảm bộ đếm tại touchUp.

Nếu bạn đang sử dụng Gdx.input để xử lý đầu vào dựa trên bỏ phiếu, hãy sử dụng cuộc gọi isTouched(int) để kiểm tra xem con trỏ N có ngừng hoạt động hay không. Triển khai libGDX tracks at most 20 pointers. Tôi không nghĩ rằng bất kỳ phần cứng nào hỗ trợ nhiều (và trò chơi của bạn cũng có giới hạn thấp hơn). Bạn sẽ phải kiểm tra tất cả các ID con trỏ, mặc dù, như con trỏ id N + 1 có thể vẫn hoạt động sau khi con trỏ id N đã để lại. Một cái gì đó như:

int activeTouch = 0; 
for (int i = 0; i < 20; i++) { 
    if (Gdx.input.isTouched(i)) activeTouch++; 
} 
3

Dont biết cách thích hợp để làm việc đó nhưng một phương pháp khó chịu và đơn giản đang đến trong tâm trí tôi. Triển khai bộ xử lý đầu vào reference for input processor here và thực hiện biến số lượt truy cập. Bên trong phương pháp touchdown của nó tăng truy cập bằng 1 và bên trong phương pháp touchup giảm truy cập bằng 1. giá trị để truy cập sẽ cung cấp cho tổng số ngón tay hiện nay chạm vào màn hình. Một cách khác để thực hiện nó là bằng con trỏ trong bộ xử lý đầu vào. Nhưng tôi nhận thấy phương pháp này đơn giản hơn :)

+0

ok và bạn có thể giải thích phương pháp khác không? – LeSam

3

bạn có thể thử này:

float Ipsi=0.5; 
    if(Gdx.input.isTouched()){ 

     int xTouch = Gdx.input.getX(); 
     int yTouch = Gdx.input.getY(); 

     int count=0; 
     ArrayList<Integer> lx = new ArrayList<Integer>(); 
     ArrayList<Integer> ly = new ArrayList<Integer>(); 

     lx.add(xTouch); 
     ly.add(yTouch); 


     //lx.size()=ly.size() 

     if(2<lx.size()){ 
       for(int i = 0; i < lx.size(); i++){ 
          if((lx.get(i)-lx.get(i+1)<Ipsi)&&(ly.get(i)-ly.get(i+1)<Ipsi)) 
          {count++;} 
       } 
     } 



    } 

tôi đã không kiểm tra mã nhưng tôi hy vọng nó sẽ làm việc. chúc may mắn.