【发布时间】:2011-07-07 18:53:58
【问题描述】:
所以我跟着一个 2D 图形教程(感兴趣的人,它是一个 @http://droidnova.com/),我到了在我的 onTouchEvent() 回调中遇到不断崩溃的地步。我仍在尝试跟踪错误,但在尝试调试问题时,我注意到我的 onTouchEvent 回调会为每个事件调用两次。
供参考
@Override
public boolean onTouchEvent(MotionEvent event)
{
int action = event.getAction();
synchronized (getHolder()) {
if (action == MotionEvent.ACTION_DOWN) {
if (gameObjects.size() < 2) {
currentlySelected = new GameObject(BitmapFactory.decodeResource(getResources(), R.drawable.icon));
currentlySelected.getCoordinates().setX((int) event.getX());
currentlySelected.getCoordinates().setY((int) event.getY());
} else {
for (GameObject gameObject: gameObjects) {
if (gameObject.inBoundingBox(event.getX(), event.getY())) {
currentlySelected = gameObject;
break;
}
}
if (currentlySelected != null) {
// Remember to remove it from the list so that we don't waste time updating it in updatePhysics twice.
gameObjects.remove(currentlySelected);
}
}
} else if (action == MotionEvent.ACTION_UP && (currentlySelected != null)) {
gameObjects.add(currentlySelected);
currentlySelected = null;
} else if (action == MotionEvent.ACTION_MOVE) {
currentlySelected.getCoordinates().setX((int) event.getX());
currentlySelected.getCoordinates().setY((int) event.getY());
}
}
不,当我在第一行设置断点并在调试模式下运行它时,当我触摸屏幕时,回调会被以下操作调用...
- 动作 = 0 (MotionEvent.ACTION_DOWN)
- 动作 = 0 (MotionEvent.ACTION_DOWN)
- 动作 = 1 (MotionEvent.ACTION_MOVE)
- 动作 = 1 (MotionEvent.ACTION_MOVE)
- 动作 = 2 (MotionEvent.ACTION_UP)
- 动作 = 2 (MotionEvent.ACTION_UP)
对于每个动作,第二个动作都会在同步调用中退出。有人知道这种行为的原因吗?
【问题讨论】:
标签: java android surfaceview