这应该工作:
@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
if(pSceneTouchEvent.isActionDown()) { //Jump only if the user tapped, not moved his finger or something
final Entity playerEntity = ...;//Get player entity here.
final float jumpDuration = 2;
final float startX = playerEntity.getX();
final float jumpHeight = 100;
final MoveYModifier moveUpModifier = new MoveYModifier(jumpDuration / 2, startX, startX - jumpHeight); // - since we want the sprite to go up.
final MoveYModifier moveDownModifier = new MoveYModifier(jumpDuration / 2, startX + jumpHeight, startX);
final SequenceEntityModifier modifier = new SequenceEntityModifier(moveUpModifier, moveDownModifier);
playerEntity.registerEntityModifier(modifier);
return true;
}
return false;
}
请记住,如果您将使用此功能,则只要有ACTION_DOWN事件,您可能会错过其他一些事件处理程序(例如,如果您有屏幕上的按钮,它们将永远不会处理该事件).
处理它的方法是使用添加任何其他想要接收触摸事件的实体作为场景的触摸区域,Scene.registerTouchArea(ITouchArea)这样做. Sprites和AnimatedSprites实现了ITouchArea,因此您可以使用它们.
当一个Scene接收到要处理的TouchEvent时,它将首先让你注册的所有ITouchAreas处理它,然后如果没有它们消耗它,它将尝试onSceneTouchEvenet方法.