Dark_Knight
@Dark_Knight
Game Dev

Как удалить предыдущую анимацию и запустить новую?

Здравствуйте. Подскажите пожалуйста.

Есть анимация, которая срабатывает в цикле для каждого элемента в наборе с задержкой каждые 1000мс. Анимация срабатывает при нажатии на кнопку.

Если я нажимаю на кнопку 2 раза, то включается вторая анимация, но если первая не проиграла до конца, то она продолжает работать параллельно со-второй, пока не проиграет.

Вопрос: как сделать, чтоб при следующем включении анимации, предыдущая не срабатывала, а если я не нажал второй раз на кнопку, то первая анимация доиграла до конца?
  • Вопрос задан
  • 4482 просмотра
Пригласить эксперта
Ответы на вопрос 3
IonDen
@IonDen
JavaScript developer. IonDen.com
Можно сделать следующим образом:

1. Ввести переменную, скажем isAnimation = false;
2. При нажатии на кнопку, проверять состояние этой переменной: if(!isAnimation) playMyAnimation();
3. В функции playMyAnimation сходу присваиваем этой переменной true;
4. В jquery animate есть метод complete, который вызывается, когда анимация закончилась. Соответственно в этом методе, присваиваем isAnimation = false снова.
5. Profit!

Ну и пример: jsfiddle.net/wzdmb/
Ответ написан
Комментировать
imater
@imater
Используйте функцию stop():
jquery-docs.ru/effects/stop/
$("#go").click(function(){
      $(".block").stop().animate({left: '+=100px'}, 2000);
    });
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы