使用Android(Andengine)的touchEvents时遇到问题。 我通过构建一个Body来注意到这个问题,我可以通过触摸它并移动手指来旋转它。
多数人都在工作。我触摸了Object,pScenTouchEvent在ACTION_DOWN上给了我一个位置(x,y)。然后我移动手指并调用ACTION_MOVE方法(在我的开关中)。问题是,前1-6次,ACTION_MOVE块的位置具有与ACTION_DOWN相同的坐标(x,y)。 所以我得到的下一个位置与旧位置有很大距离。 影响:身体第一次做了一次大的“旋转跳跃”。
@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
那么问题是什么?在我的游戏中,身体必须正确旋转。有人想要解决它吗?
谢谢!
答案 0 :(得分:0)
似乎问题是我的硬件。我在另一部智能手机上测试了相同的代码,但它确实有效。