java - 当用户点击屏幕时使 Sprite 跳跃?

标签 java android andengine

我正在使用 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) 就是这样做的。 SpriteAnimatedSprite 实现了 ITouchArea,因此您可以使用它们。

当一个 Scene 收到一个 TouchEvent 来处理时,它会首先让你注册的所有 ITouchArea 处理它,然后如果不是他们消费了它,它将尝试 onSceneTouchEvenet 方法。

关于java - 当用户点击屏幕时使 Sprite 跳跃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8829015/

相关文章:

java - BST 包含在 JAVA 中无法正常工作的方法

java - 当我更改 int 值时,字符串中的 Int 不会更改

java - Android-从 DatePickerDialogFragment 中删除 Calendarview

java - 类文件 javax/faces/webapp/FacesServlet 中的非 native 或抽象方法中缺少代码属性编译错误

java - 安卓 : Picasso is not loading some images

java - onDescriptorWrite() 从未在 BluetoothGattCallback 中调用

android - 使用库时出现 Eclipse 错误

android - 如何让 body 忽略重力(AndEngine)?

java - Android底部导航: space between icon and text

java - AndEngine 背景缩放