我正在使用andengine来实现一个能够使用它在屏幕上拖动的精灵。
所以我想要做的是当用户点击屏幕上的任何位置使精灵跳跃时。
或向上移动然后向下移动。
使用andengine进行此操作的最佳方式是什么?
答案 0 :(得分:3)
这应该有效:
@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
处理它,然后如果其中没有人使用它,它将尝试{ {1}}方法。
答案 1 :(得分:1)
看起来您必须设置一个监听器,在本教程中显示如何:http://www.andengine.org/forums/tutorials/updating-sprites-objects-listeners-t386.html然后可能使用移动修改器,如本文所示: how to move sprite object using AndEngine (Android) 我希望你能弄明白你的问题。 ;)
祝你好运 - Lijap