Slick2D input.isKeyDown

Здравствуйте, я создаю код для своей игры, чтобы при нажатии клавиши ПРОБЕЛ запускался спрайт, но моя проблема в том, что я хочу, чтобы, когда я не нажимаю ПРОБЕЛ, спрайт перезапускался (кадр возвращается к 0)

Итак, я попробовал кое-что, но это не похоже на то, что это работает. Может быть, я сделал что-то не так. Если бы кто-то мог помочь, это было бы здорово.

Мое примечание к коду: Attacking — это логическое значение, по умолчанию установленное в false, а Princess, PrincessBasicAttack и PrincessLeftBasicAttack — это три разные анимации.

if(input.isKeyDown(Input.KEY_SPACE)){
    Attacking = true;

}
    if (Attacking == true){
         if (right == true) {
             Princess = PrincessBasicAttack;
             Princess.update(delta);
             if (Princess.getFrame() >= Princess.getFrameCount() - 1){
                 Attacking = false;
                 PrincessBasicAttack.setCurrentFrame(0);
                 }
            }
         if (left == true) {
             Princess = PrincessLeftBasicAttack;
             Princess.update(delta);

                if (Princess.getFrame() == Princess.getFrameCount()){
                    Attacking = false;
                }
                if (Attacking == false && Princess.getFrame() != 0){
                    Princess.setCurrentFrame(0);
                }
         }
    }

person CharlesM    schedule 17.11.2013    source источник


Ответы (1)


Вы пробовали вызывать метод restart() для анимации?

if(input.isKeyDown(Input.KEY_SPACE)){
    Attacking = true;
} else {
    PrincessLeftBasicAttack.restart();
    PrincessRightBasicAttack.restart();
}

http://slick.ninjacave.com/javadoc/org/newdawn/slick/Animation.html#restart%28%29

person Jedi-Philosopher    schedule 16.04.2014