@qo_0p

Как начать setInterval с того же места?

У меня 3-х секундная циклическая анимация, нажимая на паузу например на 2-й секунде и затем запуская, моя анимация продолжается с того же места на котором остановилась, но оставшийся 1 секундный отрезок растягивается на 3 секунды. Как сделать так что бы таймер "доигрывал" оставшийся отрезок времени, а затем "играл" полный цикл?

function Pause() {
	if (!paused){
		clearInterval(timer);
		paused = true;
	} 
    else {
    	timer = setInterval(change, 3000); 
    	paused = false;
    }
}
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
@GreatRash
Не нужно вызывать clearInterval, просто делайте return из change если paused === true.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
var pauseButton = document.querySelector(".pause-button"),
    start = Date.now(),
    duration = 3000,
    timePassed,
    paused;



var timer = setInterval(change, duration);

pauseButton.addEventListener("click", function() {
  if (!paused) {
    clearInterval(timer);
    timePassed = Date.now() - start;
    paused = true;
  } else {
    setTimeout(function() {
      timer = setInterval(change, duration);
    }, duration - timePassed);

    paused = false;
  }
}, false);



function change() {
  // ...
}


upd: Изначальный вариант был несколько некорректен - исправил.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы