我正在使用 andengine 来实现一个可以使用它在屏幕上拖动的 Sprite 。
所以我想做的是当用户点击屏幕上的任何位置时使 Sprite 跳跃。
或者向上移动然后向下移动。
使用 andengine 执行此操作的最佳方法是什么?
最佳答案
这应该有效:
@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)
就是这样做的。 Sprite
和 AnimatedSprite
实现了 ITouchArea
,因此您可以使用它们。
当一个 Scene
收到一个 TouchEvent
来处理时,它会首先让你注册的所有 ITouchArea
处理它,然后如果不是他们消费了它,它将尝试 onSceneTouchEvenet
方法。
关于java - 当用户点击屏幕时使 Sprite 跳跃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8829015/