pointerIndex超出范围的Android多点触控
我有一个触摸事件异常,导致我的游戏在平板电脑(或更具体地,蜂窝)上崩溃…我的游戏在手机上正常运行,而且我没有听说过任何未运行Android
3.0的人都在发生这种情况或更高。这是相关的日志信息…
E/AndroidRuntime(26487): java.lang.IllegalArgumentException: pointerIndex out of rangeE/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);
当我试图将我的游戏也提供给平板电脑用户时,将不胜感激任何帮助/想法。谢谢。
回答:
我的问题是,当实际上没有两个ID时,它实际上是在调用event.getX(1)。因此,我确保event.getPointerCount()> =
2有两个ID,并且现在可以正常工作。也许您会有同样的运气!
以上是 pointerIndex超出范围的Android多点触控 的全部内容, 来源链接: utcz.com/qa/399042.html