Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcosfj1

contagem regressiva

Recommended Posts

Bom galera seguinte achei um codigo na net para fazer uma contagem regressiva no flash, e deu certo sim....Porem o q acontece este recurso de contagem regressiva será usado para promocoes, e no codigo há um problema pois pra fazzer a conta ele pega a data do computador, e isso é ruim pois cada cliente te sua hora sempre com uns minutos a mais ou a menos, ou seja nao poderia pois ficaria difernete...ai o q eu fiz:

 

ano = 2011;  
mes = 4;  
dia = 1;  
horas = 17; 
min = 00; 

//CRIEI NOVAS VARIAVEIS
ano2 = 2011;  
mes2 = 4;  
dia2 = 1;  
horas2 = 16; 
min2 = 00;

dataFinal = new Date(ano, mes-1, dia, horas, min); 
//SETEI UMA DATA INICIAL MANUALMENTE
dataInicial =  new Date(ano2, mes2-1, dia2, horas2, min2); 
function regressiva() {  
  //dataInicial = new Date();  
  goSeg = Math.floor((dataFinal-dataInicial)/1000);  
  seg = goSeg%60;  
  goMin = Math.floor(goSeg/60);  
  min = goMin%60;  
  goHoras = Math.floor(goMin/60);  
  horas = goHoras%24;  
  dias = Math.floor(goHoras/24);  
  if (seg<10) {  
      seg = "0"+seg;  
  }  
  if (min<10) {  
      min = "0"+min;  
  }  
  if (horas<10) {  
  horas = "0"+horas;  
  }  
  contagem = dias+"d, "+horas+"h, "+min+"min e "+seg+"s ";  
}  
this.onEnterFrame = function() {  
  regressiva();  
};

 

Bom resultado disso 1 horas de diferença e aparece na tela esta 1 horas, mas ele nao vai diminuindo os segundos ele fica estatico....alguem tem alguma ideia de como resolver isso?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz uma pequena adaptação:

 

ano = 2011;  
mes = 4;  
dia = 1;  
horas = 17; 
min = 00; 

//CRIEI NOVAS VARIAVEIS
ano2 = 2011;  
mes2 = 4;  
dia2 = 1;  
horas2 = 16; 
min2 = 00;

dataFinal = new Date(ano, mes-1, dia, horas, min); 
//SETEI UMA DATA INICIAL MANUALMENTE
dataInicial =  new Date(ano2, mes2-1, dia2, horas2, min2); 
function regressiva() {  
  dataInicial.setTime(dataInicial.getTime()+ 1000);  
  goSeg = Math.floor((dataFinal-dataInicial)/1000);  
  seg = goSeg%60;  
  goMin = Math.floor(goSeg/60);  
  min = goMin%60;  
  goHoras = Math.floor(goMin/60);  
  horas = goHoras%24;  
  dias = Math.floor(goHoras/24);  
  if (seg<10) {  
      seg = "0"+seg;  
  }  
  if (min<10) {  
      min = "0"+min;  
  }  
  if (horas<10) {  
  horas = "0"+horas;  
  }  
  contagem = dias+"d, "+horas+"h, "+min+"min e "+seg+"s ";
  setTimeout(regressiva,1000);
}

regressiva();

 

O problema é que a data inicial era sempre a mesma, por isso o relogio não se mexia.

 

Então primeiro eu somo um segundo na data inicial e depois faço a conta para a diferença.

Depois tirei do enterframe e dentro da função eu coloquei o setTimeout para chamar a mesma função a cada segundo.

 

Assim deve funcionar, mas as vezes o relógio pode ficar adiantado ou atrasado, mas o script que uso para os banner que faço é parecido com este, mas em AS3.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.