Foros del Web » Programando para Internet » Javascript »

tratanto el tiempo en js

Estas en el tema de tratanto el tiempo en js en el foro de Javascript en Foros del Web. Buenas de nuevo! tengo dos preguntas fundamentales sobre como trata el tiempo javascript, la primera y mas sencilla de ellas es que las funciones timeup-setinterval ...
  #1 (permalink)  
Antiguo 22/02/2014, 08:22
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Pregunta tratanto el tiempo en js

Buenas de nuevo!

tengo dos preguntas fundamentales sobre como trata el tiempo javascript, la primera y mas sencilla de ellas es que las funciones timeup-setinterval funcionnan cal que asi : 1000 equivale a un segundo, expresado en miles de milisegundos.

por favor, no me judgueis por lo que voy a preguntar ahora (no hay preguntas tontas, solo tontos que no preguntan) :

600 decimas de segundo no equivalen a 1000 es decir a un segundo? como es la conversion? es decir, dado 0060 == 0100 || 0600 == 1000 ?


Bueno, la segunda custion trata mas bien sobre ciclos, me preguntaba cual era la mejor manera de tratar ciclos basandose en tiempo en Javascript, es decir, si tengo 100 puntitos y los quiero animar a razon de 30 movimientos por segundo ¿que deberia utilizar? una funcion global para todos ellos o una funcion para cada puntito?, utilizar las funciones de tiempo o moverme por alggun paradigma de ciclos?
  #2 (permalink)  
Antiguo 22/02/2014, 11:56
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: tratanto el tiempo en js

Respecto a tu pregunta inicial, usa las matemáticas, 600 décimas de segundo son 60 segundos.

Sin embargo, ya que en los intervalos de javascript se usan milésimas de segundo, 600 décimas equivalen a 60,000 milésimas.

O visto de otra forma y para que no se confunda el humano, es común encontrar códigos como este:

setInterval(function(){alert("Hello")},60*1000);

donde al indicar 1000 milésimas, estás indicando 1 segundo. por tanto el código se ejecuta cada 60 segundos.

Así, podríamos tener

5*1000 //cada 5 segundos
0.5*1000//cada medio segundo
3600*1000//cada hora, o lo que es lo mismo 60*60*1000

Para tu segunda pregunta, no creo que fuera necesario un temporizador por cada punto, a menos que éstos tuvieran "identidad" propia y pudieran moverse o detenerse de forma independiente, en tal caso tal vez, pero aún así si solo hablamos de animación donde debe haber un solo controlador de frames, no debería ser necesario un temporizador individual para controlar el movimiento.
  #3 (permalink)  
Antiguo 22/02/2014, 13:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: tratanto el tiempo en js

Iba a decir exactamente lo mismo que ocp001a, son cálculo sencillos, el prefijo deci equivale a 1/10, mientras que mili equivale a la 1/1000, por lo tanto, las 600 décimas a las que haces referencia, equivalen a 60000 milésimas por lo siguiente:


Sabiendo que:

décimas = 1 / 10
milésimas = 1 / 1000

Aplicamos en nuestro problema:

milésimas / 1000 = 600 / 10
milésimas / 1000 = 60
milésimas = 60 * 1000
milésimas = 60000
(600 décimas de segundo equivalen a 60000 milésimas de segundo)


Para lo segundo, concuerdo nuevamente con ocp001a, no es necesario un temporizador por cada punto, puedes aplicar uno al grupo de puntos, por ejemplo:

Para el caso de N puntos insertados en elementos <span> y con posición relativa
Código Javascript:
Ver original
  1. var puntos = document.getElementsByTagName("span"),
  2.     total = puntos.length,
  3.     i = 0;
  4.     animate = {
  5.         show: function(){
  6.             puntos[i].style.top = "1em";
  7.             i = i == total - 1 ? 0 : ++i;
  8.             puntos[i].style.top = 0;
  9.         }
  10.     };
  11.  
  12. window.onload = function(){
  13.     puntos[i].style.top = "1em";
  14. };
  15.  
  16. setInterval(animate.show, 75);

Lo anterior se ve así: http://jsbin.com/leyexavo/1

Es un ejemplo muy sencillo y mejorable, pero básicamente la idea es esa.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: funcion, js, tiempo
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 09:55.