Foros del Web » Creando para Internet » Flash y Actionscript »

Cuenta regresiva, como todos los fin de año...

Estas en el tema de Cuenta regresiva, como todos los fin de año... en el foro de Flash y Actionscript en Foros del Web. Hola. Tengo este código de cuenta regresiva pero me piden que le agregue décimas de segundo. No trabajo con AS y es por eso que ...
  #1 (permalink)  
Antiguo 22/12/2005, 15:20
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 12 años, 8 meses
Puntos: 0
Cuenta regresiva, como todos los fin de año...

Hola.
Tengo este código de cuenta regresiva pero me piden que le agregue décimas de segundo.
No trabajo con AS y es por eso que acudo a vosotros.
Desde ya muchas gracias.
(Aclaro: en la primera linea aparece AÑO, MES, DIA, HORA, MINUTO, SEGUNDO)


endDate = new Date(2006, 00, 01, 00, 00, 00, 00);
timeLeft = (endDate-new Date());
var d = 24*60*60*1000;
var h = 60*60*1000;
var m = 60*1000;
var s = 1000;
Math.dosDigitos = function(value) {
return (value<10) ? ("0"+value) : (value);
};
function calculate(factor) {
var result = Math.floor(timeLeft/factor);
timeLeft -= (result*factor);
return Math.dosDigitos(result);
}
getTimeLeft = function () { timeLeft = (endDate-new Date());if (timeLeft>0) {dias = calculate(d);horas = calculate(h);minutos = calculate(m);segundos = Math.dosDigitos(Math.floor(timeLeft/1000));campo.text = dias+" días, "+horas+" : "+minutos+" : "+segundos;} else {campo.text = "00 días, 00 : 00 : 00";clearInterval(id);}};
this.createTextField("campo", 1, 0, 0, 0, 0);
this.campo.autoSize = true;
id = setInterval(getTimeLeft, 1000);
stop();
  #2 (permalink)  
Antiguo 22/12/2005, 15:52
Avatar de jair20x  
Fecha de Ingreso: noviembre-2005
Ubicación: Madrid - España
Mensajes: 531
Antigüedad: 12 años
Puntos: 1
Cita:
Iniciado por nngg
Hola.
Tengo este código de cuenta regresiva pero me piden que le agregue décimas de segundo.
No trabajo con AS y es por eso que acudo a vosotros.
Desde ya muchas gracias.
(Aclaro: en la primera linea aparece AÑO, MES, DIA, HORA, MINUTO, SEGUNDO)


endDate = new Date(2006, 00, 01, 00, 00, 00, 00);
timeLeft = (endDate-new Date());
var d = 24*60*60*1000;
var h = 60*60*1000;
var m = 60*1000;
var s = 1000;
Math.dosDigitos = function(value) {
return (value<10) ? ("0"+value) : (value);
};
function calculate(factor) {
var result = Math.floor(timeLeft/factor);
timeLeft -= (result*factor);
return Math.dosDigitos(result);
}
getTimeLeft = function () { timeLeft = (endDate-new Date());if (timeLeft>0) {dias = calculate(d);horas = calculate(h);minutos = calculate(m);segundos = Math.dosDigitos(Math.floor(timeLeft/1000));campo.text = dias+" días, "+horas+" : "+minutos+" : "+segundos;} else {campo.text = "00 días, 00 : 00 : 00";clearInterval(id);}};
this.createTextField("campo", 1, 0, 0, 0, 0);
this.campo.autoSize = true;
id = setInterval(getTimeLeft, 1000);
stop();

copie tu codigo pero me sale erro puedes revisarlo y volverlo a publicar
Saludos
  #3 (permalink)  
Antiguo 22/12/2005, 15:56
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 12 años, 8 meses
Puntos: 0
Va de nuevo por si lo pegué mal, pero este seguro funciona. Gracias

endDate = new Date(2006, 00, 01, 00, 00, 00, 00);
timeLeft = (endDate-new Date());
var d = 24*60*60*1000;
var h = 60*60*1000;
var m = 60*1000;
var s = 1000;
Math.dosDigitos = function(value) {
return (value<10) ? ("0"+value) : (value);
};
function calculate(factor) {
var result = Math.floor(timeLeft/factor);
timeLeft -= (result*factor);
return Math.dosDigitos(result);
}
getTimeLeft = function () { timeLeft = (endDate-new Date());if (timeLeft>0) {dias = calculate(d);horas = calculate(h);minutos = calculate(m);segundos = Math.dosDigitos(Math.floor(timeLeft/1000));campo.text = dias+" días, "+horas+" : "+minutos+" : "+segundos;} else {campo.text = "00 días, 00 : 00 : 00";clearInterval(id);}};
this.createTextField("campo", 1, 0, 0, 0, 0);
this.campo.autoSize = true;
id = setInterval(getTimeLeft, 1000);
stop();
  #4 (permalink)  
Antiguo 22/12/2005, 16:12
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 12 años, 8 meses
Puntos: 0
Fuente del código

El script lo obtuve de acá (lo indico por si el que pegué no funciona)

http://www.kadazuro.com/blog/archives/000022.php
  #5 (permalink)  
Antiguo 23/12/2005, 15:26
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
cuenta regresiva

:D
olas a todos, aki hice mi propia cuenta regresiva :D
solo se necesita un campo de texto dinamico con nombre de instancia: falta_txt
Código PHP:
//aumenta un cero si es menor que 10 (ejemp: 5 será 05) 
function mascero(n){return n<10?'0'+n:n;} 

this.onEnterFrame = function(){ 
    
tiempo = new Date(); 
    
falta = (1136091600000 tiempo.getTime())/10
    if(
falta 0){ 
        
Math.floor(falta/8640000); 
        
Math.floor((falta%8640000)/360000); 
        
mMath.floor((falta%360000)/6000); 
        
Math.floor((falta%6000)/100); 
        
cs Math.floor((falta%100)); 
        
falta_txt.text mascero(d)+'d : '+mascero(h)+'h : '+mascero(m)+'m : '+mascero(s)+'s : '+mascero(cs)+'cs'
    }else{ 
        
falta_txt.text 'Feliz año 2006'
        
delete this.onEnterFrame
    } 

stop(); 
y esto para con la hora del servidor
Código PHP:
//aumenta un cero si es menor que 10 (ejemp: 5 será 05)
function mascero(n){return n<10?'0'+n:n;}

_global.faltan_cs 0;
//creamos el objeto LV para cargar el timestamp del servidor
tiempo_servidor = new LoadVars();
tiempo_servidor.onLoad = function(ok){
    if(
ok){
        
faltan_cs this.time_stamp*1000;
        
upt_time = function(){
            
this.time_stamp -= 100;
            
falta = (1136091600000 faltan_cs)/10;
            if(
falta 0){
                
Math.floor(falta/8640000);
                
Math.floor((falta%8640000)/360000);
                
mMath.floor((falta%360000)/6000);
                
Math.floor((falta%6000)/100);
                
cs Math.floor((falta%100));
                
falta_txt.text mascero(d)+'d : '+mascero(h)+'h : '+mascero(m)+'m : '+mascero(s)+'s : '+mascero(cs)+'cs';
            }else{
                
falta_txt.text 'Feliz año 2006';
                
clearInterval(actualizar);
            }
            
faltan_cs += 100;
        }
        
actualizar setInterval(upt_time,100);
    }else{
        
falta_txt.text 'no se pudo cargar los datos';
    }
}
//cargamos la variable
tiempo_servidor.load('time_stamp.php');
stop(); 
y el archivo: time_stamp.php
Código PHP:
<?php echo '&time_stamp='.time(); ?>
:D
__________________
Si digo que soy mentiroso. ¿Lo soy?

Última edición por luistar; 26/12/2005 a las 08:25
  #6 (permalink)  
Antiguo 23/12/2005, 18:11
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 12 años, 8 meses
Puntos: 0
Me saca un error

Línea 2: Se espera ':'
function mascero(n){return n<10?'0'+n:n;}
  #7 (permalink)  
Antiguo 24/12/2005, 07:42
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
debe ser por la version de AS que usas...
reemplázala por ésta
Código PHP:
//aumenta un cero si es menor que 10 (ejemp: 5 será 05) 
function mascero(n){
    if(
n<10){
        
n='0'+n;
    }
    return 
n;

y aki los ejemplo

- con la hora del cliente
- con la hora del servidor

- descarga
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #8 (permalink)  
Antiguo 25/12/2005, 11:30
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 12 años, 8 meses
Puntos: 0
Excelente, Luistar!

Muchas gracias!!!
  #9 (permalink)  
Antiguo 25/12/2005, 11:42
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 12 años, 8 meses
Puntos: 0
...pero Hay Un Pequeño Problema...

El cálculo de las horas tiene un desfasaje de 2 horas, es decir que a las 24 horas del 31 de diciembre le restan 2 horas para cumplir.
fiajte que en el ejmplo que vinculaste también salta el error... Nada grave, pero es un detalle para el "10"!!!
Muchas gracias de nuevo!!!
  #10 (permalink)  
Antiguo 26/12/2005, 07:28
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
si es el mismo error, como te dije, ha de ser por la version de AS en que estás reproduciendo la pelicula... solo bastará con que reemplaces esa función por la otra...
y el desfaz de las dos horas... debes notarlo en el segundo... es porque las zonas horarias... ese ejemplo usa la hora del servidor que está configura con la zona horaria GMT-5:00... si lo pruebas con la hora de un servidor configurado para tu zona horaria... el tiempo será el correcto...
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #11 (permalink)  
Antiguo 26/12/2005, 08:11
 
Fecha de Ingreso: marzo-2005
Mensajes: 201
Antigüedad: 12 años, 8 meses
Puntos: 0
¿Está mal?

La función fue reemplazada y funciona todo perfecto.
Lo que me llama la atención es que ejecutándolo local (ctrl+Enter) maraca esa diferencia de hora:
siendo las 11:00 am del 26/12/05 en mi maquina, el contador indica que faltan 5 días y 15 horas, es decir, 2 horas mas de las correctas.
Entonces le resté 2 en // +mascero(h-2)+ 'hs. // para que se ajuste la hora
¿Está mal?
  #12 (permalink)  
Antiguo 26/12/2005, 08:39
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
qué raro... a mi me marca el tiempo faltante correctamente...
si estás usando el ejemplo con la hora del cliente, no deberías tener problemas...
si usas el segundo (con la hora del servidor) tienes que verificar la zona horaria de tu servidor... si tu servidor no marca la hora correcta para tu zona horaria, entonces basta con que le quites o aumentes la diferencia de tiempo equivalente en milisegundos al tiempo de 2006 (subrayado)...
falta = (1136091600000 +- diferencia - tiempo.getTime())/10;
por ejemp. si se pasó con dos horas:
2 horas = 1000ms * 60seg * 60min * 2 hrs
2h = 7200000ms
quedará:
falta = (1136091600000 - 7200000 - tiempo.getTime())/10;
__________________
Si digo que soy mentiroso. ¿Lo soy?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:13.