2013-05-31 3 views

ответ

11

Если вы используете InputProcessor для обработки ввода на основе событий, просто увеличьте счетчик на touchDown и уменьшите счетчик на touchUp.

Если вы используете Gdx.input для обработки ввода на основе опроса, используйте вызов isTouched(int), чтобы проверить, не указана ли указатель N. Реализация libGDX tracks at most 20 pointers. Я не думаю, что какое-либо аппаратное обеспечение поддерживает многие (и ваша игра может иметь и нижний предел). Вам нужно будет проверить все идентификаторы указателя, хотя идентификатор указателя N + 1 может оставаться активным после того, как указатель id N остался. Что-то вроде:

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

Dont знать правильный способ сделать это, но неприятный и простой метод подходит в моем сознании. Внесите входной процессор reference for input processor here и возьмите переменную счетчика. Внутри его метода приземления увеличивайте счетчик на 1, а внутренний метод touchup уменьшает счетчик на 1. значение для счетчика даст общее количество пальцев, которые в данный момент касаются экрана. Другой способ сделать это - указатель на входной процессор. Но я считаю этот метод более проще :)

+0

ОК и можете ли вы объяснить другой метод? – LeSam

3

вы можете попробовать это:

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



    } 

Я не проверял код, но я надеюсь, что он будет работать. удачи.

Смежные вопросы