CountDown //Repositório JavaScript

Descrição

Fornece contagem regressiva com pausa e eventos.
Criado: 2006.06.23

Código (Download)

//+ Carlos R. L. Rodrigues
//@ http://jsfromhell.com/classes/countdown [rev. #1]

CountDown = function(){
    this.date = !(this.finished = this.paused = false);
}
CountDown.prototype.start = function(n, e, t, r){
    var o = this;
    r ? o.onResume && o.onResume(o.n) :
    (o.n = o.date ? new Date(n).getTime() : n, o.e = o.date ? new Date(e).getTime() : e,
    o.t = t, o.finished = false, o.onStart && o.onStart(o.n));
    o.d = e < n ? 1 : -1, o.paused = false, o.i = setInterval(function(){
        o.d * (o.n -= o.d * (o.date ? 1e3 : 1)) <= o.e * o.d &&
        (o.finished = !o.stop()) && !clearInterval(o.i) ||
        o.onUpdate && o.onUpdate(o.n);
    }, (o.t || 1) * 1e3);
}
CountDown.prototype.pause = function(t){
    var o = this;
    clearTimeout(o.x), o.paused ? o.start(o.n, o.e, o.t, 1) :
    (o.paused = !clearInterval(o.i), o.onPause && o.onPause(o.n),
    t && (o.x = setTimeout(function(){
        o.start(o.n, o.e, o.t, 1);
    }, t * 1e3)));
}
CountDown.prototype.stop = function(){
    var o = this;
    clearInterval(o.i), clearTimeout(o.x), o.onStop && o.onStop(o.n), o.n = 0;
}

Exemplo (Exemplo)

<input type="text" size="50" id="lala" />

<script type="text/javascript">
//<![CDATA[

var b = document.getElementById("lala");
var t = new CountDown();
t.date = false;
t.onStart = function(n){
    b.value = n;
    b.disabled = false;
}
t.onUpdate = function(n){
    b.value = n;
}
t.onStop = function(n){
    b.value = "Finish: " + n + "!!!";
    b.disabled = true;
}
t.onPause = function(n){
    b.value = "Pause: " + n;
    b.disabled = true;
}
t.onResume = function(n){
    b.value = n;
    b.disabled = false;
}

document.onclick = function(){
    if(t.finished) t.start(5, 10);
    else t.pause(2);
}

t.start(10, 1);

//]]>
</script>

Ajuda

CountDown

CountDown(void)
Gera uma instância de CountDown.

Propriedades

CountDown.date: Boolean = true
Se true, indica que a cronometragem será baseada em um objeto Date, caso contrário um Integer contendo os segundos.

Métodos

CountDown.start(start: Object, end: Object, [time: Number]): void
Inicia a cronometragem.
start
determina a origem do contador, se a propriedade "date" é true, deve ser passado um Date, caso contrário número de segundos
end
determina o fim do contador, se a propriedade "date" é true, deve ser passado um Date, caso contrário número de segundos
time
intervalo de atualização em segundos
CountDown.pause([seconds: Number]): void
Pausa a cronometragem.
seconds
Número de segundos que irá ficar pausado. Após isso a recontagem é iniciada automaticamente.
CountDown.stop(void): void
Pára a cronometragem.

Eventos

CountDown.onStart(counter: Integer): void
Chamado quando a cronometragem se inicia.
counter
Valor atual em milisegundos. Caso a propriedade date seja false o valor é decimal
CountDown.onPause(counter: Integer): void
Chamado quando a cronometragem é pausada.
counter
Valor atual em milisegundos. Caso a propriedade date seja false o valor é decimal
CountDown.onResume(counter: Integer): void
Chamado quando a cronometragem é reiniciada após uma pausa.
counter
Valor atual em milisegundos. Caso a propriedade date seja false o valor é decimal
CountDown.onStop(counter: Integer): void
Chamado quando a cronometragem é parada.
counter
Valor atual em milisegundos. Caso a propriedade date seja false o valor é decimal
CountDown.onUpdate(counter: Integer): void
Chamado a cada intervalo de tempo.
counter
Valor atual em milisegundos. Caso a propriedade date seja false o valor é decimal

Ranque (Votos: 36)

1.31