Android 触摸事件 ACTION_DOWN 和 ACTION_MOVE 在前 x 步中具有相同的位置

Android TouchEvent ACTION_DOWN and ACTION_MOVE havesame position the first x Steps

我在使用 Android (Andengine) 的 touchEvents 时遇到问题。 我通过构建一个 Body 注意到了这个问题,我可以通过触摸它并移动手指来旋转它。

一切正常。我触摸 Object,pScenTouchEvent 在 ACTION_DOWN 上给我一个位置 (x,y)。然后我移动手指并调用 ACTION_MOVE 方法(在我的开关中)。问题是,前 1-6 次,ACTION_MOVE 块的位置与 ACTION_DOWN 具有相同的坐标 (x,y)。 所以我得到的下一个位置与旧位置有很大的距离。 作用:Body第一次做大"rotation jump"

@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
    switch (pSceneTouchEvent.getAction()) {
    case TouchEvent.ACTION_DOWN:
        Log.d("Position", "down: "+pSceneTouchEvent.getX()+", "+pSceneTouchEvent.getY());
        if (playerIsMoving && touchedFigure == null) {
            System.out.println("reset");
            resetLevel();
        }
        touchedFigure = null;
        break;
    case TouchEvent.ACTION_MOVE:
        Log.d("Position", "move: "+pSceneTouchEvent.getX()+", "+pSceneTouchEvent.getY());
        if (!playerIsMoving && touchedFigure != null && touchedFigure instanceof RotatingFigure) {
            ((RotatingFigure) touchedFigure).rotate(touchPositionOld, figureCenterOld, new Vector2(pSceneTouchEvent.getX(), pSceneTouchEvent.getY()));
        } else if (!playerIsMoving && touchedFigure != null && touchedFigure instanceof SlidingFigure) {
            Vector2 newPosition = figureCenterOld;
            newPosition.add(new Vector2(pSceneTouchEvent.getX(), pSceneTouchEvent.getY()).sub(touchPositionOld));
            ((SlidingFigure) touchedFigure).slide(newPosition);
            touchPositionOld = new Vector2(pSceneTouchEvent.getX(), pSceneTouchEvent.getY());
        }
        break;
    default:
        break;
    }
    return false;
}

这是 LogCat 输出:

04-30 12:18:03.476: D/Position(22974): down: 197.5, 287.91666
04-30 12:18:03.546: D/Position(22974): move: 197.5, 287.91666
04-30 12:18:03.746: D/Position(22974): move: 197.5, 287.91666
04-30 12:18:04.136: D/Position(22974): move: 197.5, 287.91666
04-30 12:18:04.526: D/Position(22974): move: 197.5, 287.91666
04-30 12:18:04.696: D/Position(22974): move: 205.92313, 290.86475
04-30 12:18:04.776: D/Position(22974): move: 206.29709, 290.83334
04-30 12:18:04.846: D/Position(22974): move: 206.68404, 290.83334
04-30 12:18:04.926: D/Position(22974): move: 207.1292, 291.29587
04-30 12:18:05.016: D/Position(22974): move: 207.51622, 291.25
04-30 12:18:05.056: D/Position(22974): move: 207.92809, 291.25
04-30 12:18:05.136: D/Position(22974): move: 208.3959, 291.25
04-30 12:18:05.186: D/Position(22974): move: 208.75002, 291.3545
04-30 12:18:05.216: D/Position(22974): move: 208.75002, 291.85513
04-30 12:18:05.316: D/Position(22974): move: 206.34752, 291.66666

那么问题是什么?在我的游戏中 body 必须正确旋转。有一些body 修复它的想法吗?

谢谢!

看来问题出在我的硬件上。我在另一部智能手机上测试了相同的代码并且它有效。