pointerIndex out of range Android multitouch

У меня есть исключение касания, которое приводит к сбою игры на планшетах (точнее, сотах) ... Моя игра отлично работает на моем телефоне, и я не слышал, чтобы это происходило с кем-либо, кто не работает под управлением Android 3.0 или выше. Вот соответствующая информация журнала ...

E/AndroidRuntime(26487): java.lang.IllegalArgumentException: pointerIndex out of range
E/AndroidRuntime(26487):    at android.view.MotionEvent.nativeGetAxisValue(Native Method)
E/AndroidRuntime(26487):    at android.view.MotionEvent.getX(MotionEvent.java:1549)
E/AndroidRuntime(26487):    at kieran.android.asteroids.GameUI.onTouchEvent(GameUI.java:665)
E/AndroidRuntime(26487):    at android.view.View.dispatchTouchEvent(View.java:4616)
E/AndroidRuntime(26487):    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1560)
E/AndroidRuntime(26487):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1291)
E/AndroidRuntime(26487):    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1560)
E/AndroidRuntime(26487):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1291)
E/AndroidRuntime(26487):    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1560)
E/AndroidRuntime(26487):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1291)

... А вот код, который его вызывает. Мне кажется, это нормально, но, может быть, есть ошибка в сотах, которую еще не исправили? Строка номер 665 из приведенного выше журнала соответствует строке float x = event.getX (id); . Это должно быть как-то связано с тем, как я получаю какая переменная может быть? Но она отлично работает на телефонах 2.3 и ниже ...

int action = event.getAction();
int actionCode = action & MotionEvent.ACTION_MASK;

if(actionCode == MotionEvent.ACTION_POINTER_UP || action == MotionEvent.ACTION_UP) {
    int which = action >> MotionEvent.ACTION_POINTER_ID_SHIFT;
    int id = event.getPointerId(which);
    float x = event.getX(id);
    float y = event.getY(id);

Любая помощь / идеи будут очень благодарны, так как я пытаюсь сделать свою игру доступной и для пользователей планшетов. Спасибо.

30
задан DRiFTy 6 September 2011 в 01:13
поделиться