Итак, я следовал учебному пособию по 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());
}
}
Нет, когда я ставлюточка останова в первой строке и запуск ее в режиме отладки, когда я касаюсь экрана, вызывается обратный вызов со следующим действием ...
- action = 0 (MotionEvent.ACTION_DOWN)
- action = 0 (MotionEvent.ACTION_DOWN)
- action = 1 (MotionEvent.ACTION_MOVE)
- action = 1 (MotionEvent.ACTION_MOVE)
- action = 2 (MotionEvent.ACTION_UP)
- action = 2 (MotionEvent.ACTION_UP)
для каждого действия, второе выводится при синхронизированном вызове. Кто-нибудь знает причину такого поведения?