Android/Processing MotionEvent getX()引发异常
我是android开发的新手,所以请容忍我 我已经编写了一个处理脚本,它可以与两个同时按下的按钮一起工作。为此,我使用android.view.motionevent。在我的主脚本(pde)中,我有以下内容:Android/Processing MotionEvent getX()引发异常,android,exception,processing,motionevent,Android,Exception,Processing,Motionevent,我是android开发的新手,所以请容忍我 我已经编写了一个处理脚本,它可以与两个同时按下的按钮一起工作。为此,我使用android.view.motionevent。在我的主脚本(pde)中,我有以下内容: public boolean surfaceTouchEvent(MotionEvent event) { if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { //do action down stuff... }
public boolean surfaceTouchEvent(MotionEvent event) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
//do action down stuff...
}
//etc do other actions...
这个很好用。问题出现在处理动作时:
//ACTION_MOVE
else if (event.getActionMasked() == MotionEvent.ACTION_MOVE) {
int pointercount = event.getPointerCount();
print("pointercount: " + str(pointercount));
for (int i = 0; i<pointercount; i++) {
int pointerId = event.getPointerId(i);
print("i: " + str(i));
print("pointerid: " + str(pointerId));
movex[pointerid] = event.getX(pointerId);
movey[pointerid] = event.getY(pointerId);
}
}
异常之前的输出为:
pointercount: 1
i: 0
pointerid: 1
所以有一个指针的指针id是1。显然,getX()引发了异常,但我不明白为什么,因为我使用的是event.getPointerId()给出的pointerid
有什么想法吗?我想出来了
getX()获取事件列表中的索引。不是指针。我曲解了文档中的“使用getPointerId(int)查找此索引的指针标识符”;不要使用getPointerId为getX()生成参数。如果还没有索引,请使用findPointerIndex()
对上述代码的更正将是
movex[pointerid] = event.getX(i);
movey[pointerid] = event.getY(i);
…因为我的数组是由指针id隐式索引的。我知道有点老套。从那以后,代码一直在向前移动
movex[pointerid] = event.getX(i);
movey[pointerid] = event.getY(i);