AndEngine SceneTouchEvent - PullRequest
       9

AndEngine SceneTouchEvent

0 голосов
/ 15 января 2012

Я использую метод AndEngines onSceneTouchEvent для создания эффекта прыжка для спрайта.

Проблема, с которой я столкнулся, заключается в том, что если пользователь, например, касается экрана, трижды нажимает на экран, спрайт будет продолжать прыгать,я хочу, чтобы он получал только один клик и делал один прыжок за одно касание.

Вот то, что я использую, и вызывает эту проблему.Как вы видите, я пытаюсь использовать логическое значение mIsJumping, и когда игрок сталкивается с невидимым прямоугольником, ему снова устанавливается значение false, чтобы можно было снова прыгать.

@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {

    if(pSceneTouchEvent.isActionUp()){

             if(mIsJumping == false){
                    SequenceEntityModifier jumpModifier = new SequenceEntityModifier(
                                new MoveYModifier(.6f, player.getY(), player.getY() - 250, EaseQuadOut.getInstance()),
                                new MoveYModifier(.6f, player.getY() - 250, player.getY(), EaseBounceOut.getInstance()));
                        player.registerEntityModifier(jumpModifier);

            }


    }



    return false;
}

Из моего описания выше, как я могу только зарегистрироватьсядаже одно касание и прыгать, пока спрайт не столкнется с прямоугольником?

1 Ответ

2 голосов
/ 15 января 2012

Существует даже более простое решение - используйте IEntityModifierListener.

Создайте слушателя следующим образом:

final IEntityModifier.IEntityModifierListener listener = new IEntityModifier.IEntityModifierListener() {

        @Override
        public void onModifierStarted(IModifier<IEntity> pModifier,
                IEntity pItem) {

        }

        @Override
        public void onModifierFinished(IModifier<IEntity> pModifier,
                    IEntity pItem) {
            mIsJumping = false;

        }

};

Зарегистрируйте его на MoveYModifier, который перемещает игрока вниз.Таким образом, когда модификация заканчивается (модификация перехода заканчивается), mIsJumping будет ложным.Кроме того, не забудьте установить mIsJumping на true, когда начинается прыжок.

...