@zikju

Таймер jQuery countdown360 — как сделать функцию «Pause/Unpause»?

Всем привет!

Ищу решение одной задачки. Я использую jQuery плагин "jQuery countdown360", в котором не предусмотрена функция делать паузу обратного отсчета и возобновления (по крайней мере в скромной документации об этом ничего не сказано). Есть только функция STOP (она обнуляет таймер и начинает отсчет заново).

В jquery.countdown360.js присутствует код функций play() и stop():
start: function () {
      this.startedAt = new Date();
      this._drawCountdownShape(Math.PI*3.5, true);
      this._drawCountdownLabel(0);
      this.interval = setInterval(jQuery.proxy(this._draw, this), 1000);
    },

    stop: function (cb) {
      clearInterval(this.interval);
      if (cb) { cb(); }
    },


Может кто-нибудь может подсказать как должна выглядеть функция "pause/unpause"?
Увы, моих javascript-знаний пока не хватает.

Спасибо!
  • Вопрос задан
  • 461 просмотр
Решения вопроса 1
В файл jquery.countdown360.js добавьте две фу-и:
pause: function () {
      clearInterval(this.interval);
},

unpause: function () {
       this.extendTimer(Math.round((new Date().getTime() - this.startedAt.getTime())/1000) - this.secondsElapsed);
       this.interval = setInterval(jQuery.proxy(this._draw, this), 1000);
    }

И ф-я _draw вот такая будет:
_draw: function () {

      var secondsElapsed = Math.round((new Date().getTime() - this.startedAt.getTime())/1000),
          endAngle = (Math.PI*3.5) - (((Math.PI*2)/this.settings.seconds) * secondsElapsed);

      this.secondsElapsed = secondsElapsed;

      this._clearRect();
      this._drawCountdownShape(Math.PI*3.5, false);
      if (secondsElapsed < this.settings.seconds) {
        this._drawCountdownShape(endAngle, true);
        this._drawCountdownLabel(secondsElapsed);
      } else {
        this._drawCountdownLabel(this.settings.seconds);
        this.stop();
        this.settings.onComplete();
      }
    }

Другими словами в ней надо добавить:
this.secondsElapsed = secondsElapsed;
И будет вам счастье.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
28 апр. 2024, в 17:10
20000 руб./за проект
28 апр. 2024, в 15:00
100000 руб./за проект
28 апр. 2024, в 14:43
5000 руб./за проект