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

Poner hora del servidor en un flash - Un poco urgente

Estas en el tema de Poner hora del servidor en un flash - Un poco urgente en el foro de Flash y Actionscript en Foros del Web. Hola amigos: Este es mi primer post y espero poder contar con vuestro apoyo. Sucede que a último momento mi "jefe" quiere un reloj en ...
  #1 (permalink)  
Antiguo 22/05/2006, 13:46
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 8 meses
Puntos: 10
Poner hora del servidor en un flash - Un poco urgente

Hola amigos:
Este es mi primer post y espero poder contar con vuestro apoyo.
Sucede que a último momento mi "jefe" quiere un reloj en flash que muestre la hora del servidor (un hosting de pago).
Yo apenas he empezado con esto de flash (uds. saben, banners más que nada) y no se (aún) como hacer algo así. Estuve buscando en el web y en un MSN space encontré la dirección de relojes en flash. Y baje uno que le agradó a mi jefe pero luego yo note que solo muestra la hora de la PC con que se conecta, más no la del servidor.
Revisando el código del flash vi que hace esta llamada

realHours = mydate.getHours();

en 2 fotogramas distintos. Lei que se puede interactuar flash con asp y php (nuestro web esta en asp) y obviamente con la funcion Now() puedo obtener la hora del servidor real. Averigue que con loadVariablesNum puedo cargar una variable en un fla y usarlo, pero en este fla en particular, la siguiente rutina se repite (más o menos igual) en 2 fotogramas distintos:

1er. fotograma
myDate = new Date(year, month, date, hour, min, sec, ms);
realHours = mydate.getHours();
time = int(realHours);
if (int(hours) >= 12)
{
hours = hours - 12;
am = "PM";
}
else
{
am = "AM";
} // end if
if (time <= 6)
{
_root.dayMarker.gotoAndStop(1);
}
else if (time >= 7 && time <= 8 )
{
_root.dayMarker.gotoAndStop(4);
}
else if (time >= 9 && time <= 17)
{
_root.dayMarker.gotoAndStop(2);
}
else if (time >= 18 && time <= 20)
{
_root.dayMarker.gotoAndStop(3);
}
else
{
_root.dayMarker.gotoAndStop(1);
} // end if
minutes = myDate.getMinutes();
if (int(minutes) < 10)
{
minutes = "0" + minutes;
} // end if
secs = myDate.getSeconds();
if (int(secs) < 10)
{
secs = "0" + secs;
} // end if
clock = hours + ":" + minutes;
today = myDate.getmonth() + 1 + "/" + myDate.getdate() + "/" + myDate.getfullyear();


2do. fotograma
myDate = new Date(year, month, date, hour, min, sec, ms);
hours = mydate.getHours();
realHours = mydate.getHours();
time = int(realHours);
if (int(hours) > 12)
{
hours = hours - 12;
am = "PM";
}
else
{
am = "AM";
} // end if
if (time <= 6)
{
_root.dayMarker.gotoAndStop(1);
}
else if (time >= 7 && time <= 8 )
{
_root.dayMarker.gotoAndStop(4);
}
else if (time >= 9 && time <= 17)
{
_root.dayMarker.gotoAndStop(2);
}
else if (time >= 18 && time <= 20)
{
_root.dayMarker.gotoAndStop(3);
}
else
{
_root.dayMarker.gotoAndStop(1);
} // end if
minutes = myDate.getMinutes();
if (int(minutes) < 10)
{
minutes = "0" + minutes;
} // end if
secs = myDate.getSeconds();
if (int(secs) < 10)
{
secs = "0" + secs;
} // end if
clock = hours + ":" + minutes;
today = myDate.getmonth() + 1 + "/" + myDate.getdate() + "/" + myDate.getfullyear();


tengo que entregar este diseño esta semana y la verdad no se como lograr que el fla lea la hora del servidor. Las pruebas las hago asi:

test.asp => llama al archivo reloj.swf

hora.asp => tiene la variable de tiempo de esta forma

&hora=<%=Now()%>

los 3 archivos (incluyento el swf) estan en una misma carpeta (supongo que luego puedo moverlos a otras carpetas siempre y cuando redireccione bien las rutas de los código obviamente)

También note que la función Now() me da la fecha en este formato

5/22/2006 11:04:43 AM

y he visto que en el actionscript crean un array (eso me parece) con esta línea

myDate = new Date(year, month, date, hour, min, sec, ms);

pero el orden de esos elementos es distinto a los que muestra la funcion Now(), asi que probe modiicar (en los 2 fotogramas) esta linea

myDate = new Date(year, month, date, hour, min, sec, ms);

por esta otra

myDate = new Date(month, date, year, hour, min, sec, ms);

y la que parece carga el array

realHours = mydate.getHours();

por esta otra

realHours = mydate.loadVariablesNum("hora.asp",0);

y en la linea

hours = mydate.getHours(); del 2do fotograma

Pero obviamente no me ha dado resultado por lo que recurro a vosotros.
Disculpen la extensión de mi post, pero como no puedo enviarles el fla me he tenido que extender.

El swf lo obtuve de esta dirección

h t t p : / / t 2 . t e c h n i o n . a c . i l / ~ s n o o m / c l o c k . h t m l

como aparecen caracteres raros en mi terminal (debe ser por cuestión del idioma de la página), el que baje es el 2do de la 4ta. fila (empezando desde arriba). Para modificarlo utilice el Sothink SWF Decompiler (la empresa lo ha comprado hace algunos meses) y lo he usado simplemente porque en realidad es una emergencia de tiempo (ironico, ¿eh?) pues en realidad (pueden dudar pero les digo la verdad), desearia haber podido tener el tiempo para poder crear uno por mi mismo.

Por favor dadme una mano........ que lo tengo liado este asunto y ya me veo como el chivo expiatorio......

Gracias y sobre todo gracias por la paciencia en leer este post

Espero vuestros comentarios y consejos
  #2 (permalink)  
Antiguo 22/05/2006, 17:24
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 8 meses
Puntos: 0
hola... eso parece estar un poco engorroso
hice un reloj con la hora del servidor y le puse un diseño de los se muestra en la url

El truco está en obtener lo que se conoce como time stamp, con la hora del servidor; este ejemplo funciona con php, si quieres usarlo con otro lenguaje solo tienes que generar el time_stamp
time stamp:
Cita:
Iniciado por http://www.ignside.net/man/php/fechas.php
La función time() nos devuelve un número entero con la información de la fecha y hora actual, expresada en número de segundos transcurridos desde el tiempo epoch, es decir, medianoche del 1 de enero de 1970 (Greenwich Mean Time).
:D
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #3 (permalink)  
Antiguo 22/05/2006, 21:14
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 8 meses
Puntos: 10
te agradezco mucho la respuesta, sobre todo tan rápida, pero me disculparas la torpeza, como dije en mi post original, estoy empezando recién en esto del action script y el modelo de reloj que bajé es el que quiere mi jefe si o si.
analice tu código y no he podido adaptarlo al del fla que tengo.

he subido el fla en un zip al servidor y te pediria me ayudaras a que lea la hora del servidor..... esta es la dirección

http://rapidshare.de/files/21149849/reloj.zip.html



disculpa el abuso de confianza dado que no nos conocemos, pero, se que solito me meti en este lio al publicar "tentaviamente" un flash que no leia hora del servidor y ahora estoy en lios y bien grandes, considerando que recien llevo 2 meses..... en fin, esa es otra historia...... ojala y tengas el tiempo para poder apoyarme

Un abrazo cordial y sincero desde Perú
  #4 (permalink)  
Antiguo 23/05/2006, 08:38
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 8 meses
Puntos: 0
ok no problem
era sólo cuestión de aplicarle el diseño
vuélvelo a descargar, incluyo otro reloj con el diseño que muestras

recuerda probarlo en un servidor con php
:D
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #5 (permalink)  
Antiguo 23/05/2006, 09:14
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 8 meses
Puntos: 10
Te agradezco mucho!!!!!!..... en verdad me has salvado de un lio bien fregado....
Como cosa aparte (y para aprender por supuesto), he notado que tu actionscript demora 1 segundo en empezar, esto es, carga el flash pero luego de 1 segundo empieza a andar; el fla que encontre empieza ni bien carga.....¿por que?. Comprendo que por esa razón hay 2 actionscripts casi iguales (salvo una línea de código), pues el primer actionscript (hablo del fla que encontré y te envie) inicia el reloj y el segundo es el que se mantiene repitiendo luego debido al 3er fotograma que tiene la instrucción de ir al 2do dejando "libre" el 1ro.........
He visto que utilizas una suerte de contador, es decir, esperas que pase 1 segundo y repites el mismo fotograma...... ¿que diferencia hay entre el actionscript tuyo y el que encontre?

Te agradezco nuevamente por todo, lo digo de corazón!!!!!
  #6 (permalink)  
Antiguo 23/05/2006, 10:26
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 8 meses
Puntos: 0
Se demora en iniciar el reloj porque primero tiene que cargar el tiempo del servidor, desde que se carga la pelicula transcurre un tiempo hasta que flash solicite el time_stamp al servidor y éste le responda, debido a ello es la demora...

El controlar iteraciones con fotogramas distintos ya es cosa del pasado (AS1)
cuando en el fotograma 1 ponías las acciones y el el fotograma 2 ponias un: gotoAndPlay(1); para que vuelve a leer las acciones del fotograma anterior y así crear el 'loop', tampoco es necesario crear un nuevo objeto date para cada accion que querramos usar, osea que no tenemos que crear un objeto para los segundos otro para los minutos, horas, otro para el reloj digital y para la fecha, basta una sola vez

es mejor usar los controladores de eventos; el más usual es onEnterFrame que quiere decir 'en cada lectura de fotograma' (depende de la velocidad de fotogramas por segundo (fps) a la que esté exportada la película)

por ejemplo si queremos tener un reloj con la hora local sería así de simple:

Código:
this.onEnterFrame = function(){
	var hora_date:Date = new Date();
	hora_txt.text = hora_date.getHours()+':'+hora_date.getMinutes()+':'+hora_date.getSeconds()+':'+hora_date.getMilliseconds();
}
en este ejemplo:
en cada lectura de fotograma (onEnterFranme) de este movieClip (this) obtenemos la el tiempo local (var hora_date:Date = new Date();) en ese momento de la lectura, de esa manera tenemos siempre el tiempo actual, y lo mostramos en un campo de texto (hora_txt)

si queremos un reloj con la hora del servidor, la idea es la misma,
cada cierto tiempo consultamos el tiempo en el servidor y lo mostramos
pero imagina que nuestro reloj con hora del servidor no solo queremos que muestre segundos sino también milisegundos; si queremos tener el tiempo del servidor actual tendríamos que comunicarnos con le servidor un par de cientos de veces por segundo, ESO ES DEMASIADO!!!, aun comunicarse con el servidor una vez por segundo es bastante, sólo haría lenta nuestra página, el reloj tendría demoras y talvez saturemos el servidor xD...

por ello en vez de pedir el tiempo al servidor en cada iteración, se lo pedimos una vez y trabajamos con ella (vamos icrementando su valor el tiempo que se haya demorado en pasar de una iteración a otra).

Me explico...
Si la película está configurada a 10fps, en cada iteración tenemos que incrementar el valor del tiempo en 1/10seg (0.1 segundos o lo mismo que es 100 milisegundos) para que asi en 10 iteraciones se sumen en total un segundo....

pero aveces requerimos que nuestra pelicula este configurada a mas de 10fps, a veces a 12fps(predeterminado) o 36fps 0 48fps
por lo que tendríamos que recalcular CUÁNTO es el incremento para cada iteración...

dado ese inconveniente hay otra alternativa al onEnterFrame para hacer iteraciones, es con al función setInterval
esta función lo que haces es ejecutar otra funcíon cada cierto tiempo

con esto tendríamos un control de tiempo para cada iteración específico para nuestro reloj y no dependeríamos de los FPS
si hacemos que la iteración sea cada 1 segundo, tendríamos que sumar 1seg (1000 milisegundos) al tiempo y así tenemos las cosas mas claras y controladas

y eso es lo que hago en el reloj con hora del servidor

en resumen...
- con la hora local, basta usar onEnterFrame y obtener la hora en cada momento
- con la hora del servidor obtemos el tiempo, iteramos 1vez por segundo y sumamos 1seg al tiempo y volvemos a iterar
es lo que los direrencia


NOTA. al calcular el timepo del servidor de esa manera todo debería ir viento en popa, pero no es así, notarás que la hora del servidor tiene un retrazo de apoximadamente mmm.. 1seg por cada 5minutos xD
esto es por la capacidad de la PC's de ejecutar el codigo, algunas serán lo suficientemente potentes ejecutarlo correctamente y otras tendrán retrasos :P
para solucionarlo se podría volver a cargar cada cierto tiempo la hora actual del servidor y recomenzar el 'loop' o también podríamos hacer que el valor de incremento en cada iteración, no depende del tiempo que tarda cada iteración
sino que al tiempo original del servidor le sumamos el tiempo que lleva de cargado la pelicula menos el tiempo en que se cargo el dato del servidor
ops creo que la estoy enredando xD

saludos :D
__________________
Si digo que soy mentiroso. ¿Lo soy?

Última edición por luistar; 23/05/2006 a las 10:44
  #7 (permalink)  
Antiguo 23/05/2006, 13:38
Avatar de Mono-R  
Fecha de Ingreso: abril-2006
Ubicación: Bs. As. Argentina
Mensajes: 155
Antigüedad: 18 años, 7 meses
Puntos: 1
Muy buen aporte "luistar"

Saludos.
__________________
:-) ... cuanto más intento aprender descubro lo poco que se ... :pensando:
  #8 (permalink)  
Antiguo 23/05/2006, 13:43
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 8 meses
Puntos: 10
Simplemente fantastica tu expicación...... y eso que soy novato novato...... programo en asp y php y comprendo lo que dices. Dime, ¿que links me recomendarias para documentarme sobre actionscript aparte, claro esta, de la ayuda misma del flash?. El que tengo a mano es el Flash 8, algo pesado comparado con el Mx pero es el que tengo. Me interesa esto del actionscript pues con este lio del relojito de marras he visto posibilidades y antes de comprometerme quiero documentarme.......

Mil mil gracias en verdad!!!!!!!!
  #9 (permalink)  
Antiguo 23/05/2006, 14:32
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 8 meses
Puntos: 0
Te recomiendo webintenta, el blog y el foro de after-hours, cristalab, y puedes encontrar más sobre action script en internet

Me parece lo mejor para aprender es descarganos ejemplos (bien hechos, nada de codigo antiguo F4-5 AS1, carentes de logica, o de esos que usan una letra como variable, que sólo nos confunden más) y empezar a analizarlos
si encontramos algo que no sabemos o tenemos duda, primeramente buscamos en la documentación oficial, si aún no nos queda claro, buscamos en los foros y si no lo encontramos, hacemos una consulta :D
haaaa y huye de AS1 xD
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #10 (permalink)  
Antiguo 26/05/2006, 11:00
 
Fecha de Ingreso: febrero-2003
Mensajes: 84
Antigüedad: 21 años, 9 meses
Puntos: 0
Pregunta a mi no me funciona

si pongo mi hora local en la hora de españa y mi zona horaria , el reloj tambien cambia en a la hora de españa y no deberia ser asi porque el servidor que tengo publicado en un servidor de PERU.

que sera no ?
  #11 (permalink)  
Antiguo 26/05/2006, 14:17
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 8 meses
Puntos: 0
el ejemplo que publiqué no tiene nada que ver con las configuraciones del cliente (local), el tiempo lo toma del servidor; si tu servidor y tu cliente son la misma PC entonces haz la prueba con otro servidor, verás que todo anda bien
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #12 (permalink)  
Antiguo 27/05/2006, 10:14
 
Fecha de Ingreso: febrero-2003
Mensajes: 84
Antigüedad: 21 años, 9 meses
Puntos: 0
Estoy convencido de que asi funciona

mi servidor esta en lima y lo pongo tal y como dices y al parecer funciona pero el problema es que tengo a tres conocidos en españa incluyendo un amigo informatico que me dices que la hora que muestra ese reloj es la hora local de ellos, ojo que yo no estoy trabajando en el mismo servidor , estoy subiendo la informacion.

Creo que el objetivo de el reloj esque te muestra lo hora de tu servidor y le muestre eso hora a cualquier extranjero y vea la hora de tu pais, y la verdad no funciona.

De verdad amigo. mira hacemos algo publica tu el reloj y dame la direccion para ver si es cierto que me muestra la hora de tu pais.

que dices te animas ?
  #13 (permalink)  
Antiguo 27/05/2006, 11:20
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 8 meses
Puntos: 0
http://trip2peru.com/hora_servidor/hora_servidor.html
http://trip2peru.com/hora_servidor/hora_servidor[disenio_2].html
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #14 (permalink)  
Antiguo 27/05/2006, 11:44
 
Fecha de Ingreso: febrero-2003
Mensajes: 84
Antigüedad: 21 años, 9 meses
Puntos: 0
Aqui Te Mando La Prueba

Fijate aqui, mi hora local de windows, tu reloj y la zona que pongo y tu reloj cambia

http://www.arbolito.com.pe/demo1/demo.html
  #15 (permalink)  
Antiguo 29/05/2006, 10:13
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 8 meses
Puntos: 0
teneis razon hombre
si cambiamos el hora local no afecta; pero si cambiamos la zona horaria, afecta el obtener el tiempo epoch

si en vez de obtener el tiempo en segundos, la obtenemos en año,mes,dia,hora,minuto,segundo parece que ya funciona

probad de nuevo los enlaces que te di y verifica si anda bien...

saludos :D
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #16 (permalink)  
Antiguo 31/05/2006, 09:49
 
Fecha de Ingreso: mayo-2006
Mensajes: 17
Antigüedad: 18 años, 5 meses
Puntos: 0
De acuerdo Yo tambien ocupo tu ayuda

Segui toda tu explicacion acerca de como obtener un swf que muestre la hora del servidor y aunque propiamente no fue para mi la explicacion, como quiera te agradezco el tiempo y dedicacion...

Pero tengo un problema yo tambien tengo un jefe engorroso y me pidio algo similar, crei que tu solucion me resolvia la vida, pero me dijeron que el servidor no soporta PHP, solo ASP, .NET, HTML, HTM.

Queria abusar de tu amabilidad y tus conocimientos, sera posible que me ayudes a hacer la adaptacion de php a asp y en el swf, juro que te lo agradeceria muchisimo.
  #17 (permalink)  
Antiguo 31/05/2006, 10:02
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 8 meses
Puntos: 0
lo importante es recojer las variables necesarias:
una secuencia como ésta:

&anio=2006&mes=5&dia=31&hora=9&minuto=02&segundo=4 8&

busca en el subforo foro de asp, cómo generar algo como eso

..............
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #18 (permalink)  
Antiguo 31/05/2006, 10:47
 
Fecha de Ingreso: mayo-2006
Mensajes: 17
Antigüedad: 18 años, 5 meses
Puntos: 0
Si mas o menos entendi algo lo que pasa es que yo soy Diseñador grafico y conosco muy poco de ActionScript y cero de php, asp y todo lo demas, por eso te pedia la ayuda, porque ya me duele la cabeza de leer foros y buscar tutoriales y hasta ahora no he podido...

Si podrias por favor darme un ejemplo real, un archivo asp y un archivo fla solo con la programacion ya todo lo demas lo pongo yo, de echo lo unico que necesito es el dia del mes

Lo que tengo que hacer es una cuenta regresiva (faltan 9 dias; faltan 8 dias, faltan "n" dias)

Por favor solo ayudame con eso como hacer que el .swf sepa que dia es en base al servidor porque ya ves que mucha gente no tiene bien la informacion de su tiempo y fecha local
  #19 (permalink)  
Antiguo 01/06/2006, 07:38
 
Fecha de Ingreso: mayo-2006
Mensajes: 17
Antigüedad: 18 años, 5 meses
Puntos: 0
Con lo mismo....

Por favor si alguien puede ayudarme, ya mas o menos avance en esto ya puedo hacer que el swf obtenga variables de un txt, creo que eso queire decir que la programacion de mi swf ya esta bien.

con el mismo archivo nada mas cambiando el nombre por "archivo.asp" en LoadVariables, creeria yo que funcionaria y no, lo corro y la variable se queda en blanco.

en mi archivo .asp solo tengo %response.write variable=xxx% (aclaro que es la primera ves que hago algo con asp) Y el swf no jala la informacion.

Si alguien sabe cual es mi error o si conocen otra manera de solucionar mi problema se los agradeceria...
  #20 (permalink)  
Antiguo 19/01/2008, 16:56
 
Fecha de Ingreso: enero-2008
Mensajes: 1
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Poner hora del servidor en un flash - Un poco urgente

Hola amigos

Alguien me podria ayudar en crear un reloj flash de aspecto Digital muy sencillo. Solo con la letra "digital.ttf" color verde fluorescente. Fondo Transparente

IMPORTANTE! La Hora debe ser la del Servidor de la Web! No la del PC Local!

Otra cosa importante es que nos e conecte todo el rato al servidor. Que conecte una vez para obtener la hora y luego que ande solo ...

Mi intencion es colocar ese reloj arriba en la derecha

Soy totalmente un novato en flash y no tengo ni idea de como crear esto. Si laguien me podria preparar un reloj senzillo con la letra digital como explicado arriba le estaria muy agradecido

Tamaño de la letra mas o menos 18 o 20

Un saludo y mil gracias

Ottydeejay

Última edición por ottydeejay; 19/01/2008 a las 17:31
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 16:18.