У меня есть исключение события касания, которое приводит к сбою моей игры на планшетах (или, более конкретно, сотовых)... Моя игра отлично работает на моем телефоне, и я не слышал об этом, происходящем с кем-либо, работает под управлением 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);
. Должно быть, это связано с тем, как я могу получить переменную which
, возможно? Но он отлично работает на телефонах /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);
Любая помощь/идеи были бы очень благодарны, поскольку я пытаюсь сделать свою игру доступной для пользователей планшетов. Спасибо.