pointerIndex超出范围的Android多点触控

我有一个触摸事件异常,导致我的游戏在平板电脑(或更具体地,蜂窝)上崩溃…我的游戏在手机上正常运行,而且我没有听说过任何未运行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);

当我试图将我的游戏也提供给平板电脑用户时,将不胜感激任何帮助/想法。谢谢。

回答:

我的问题是,当实际上没有两个ID时,它实际上是在调用event.getX(1)。因此,我确保event.getPointerCount()> =

2有两个ID,并且现在可以正常工作。也许您会有同样的运气!

以上是 pointerIndex超出范围的Android多点触控 的全部内容, 来源链接: utcz.com/qa/399042.html

回到顶部