Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android/Processing MotionEvent getX()引发异常_Android_Exception_Processing_Motionevent - Fatal编程技术网

Android/Processing MotionEvent getX()引发异常

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... }

我是android开发的新手,所以请容忍我

我已经编写了一个处理脚本,它可以与两个同时按下的按钮一起工作。为此,我使用android.view.motionevent。在我的主脚本(pde)中,我有以下内容:

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);