Foros del Web » Programando para Internet » Javascript »

Problema con timer

Estas en el tema de Problema con timer en el foro de Javascript en Foros del Web. Buenas Estoy intentando programar unos botones para una pagina web con una animación para que sea un poquito mas agradable a la vista, el movimiento ...
  #1 (permalink)  
Antiguo 19/08/2010, 08:03
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 6 meses
Puntos: 0
Problema con timer

Buenas

Estoy intentando programar unos botones para una pagina web con una animación para que sea un poquito mas agradable a la vista, el movimiento lo estoy controlando con timers pero cuando paso por encima de mas de un botón y empieza el movimiento todos se aceleran automáticamente. Pensé que era por utilizar la misma varible pero lo he probado con mas de una i sigue haciendo lo mismo.

Alguien tiene alguna idea de porque me pasa esto?

Muchas gracias.
  #2 (permalink)  
Antiguo 19/08/2010, 21:10
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Problema con timer

me imagino porque no controlas debidamente el manejador de los settimeout y por ende generas más de uno en el onmouseenter y por ende afectan a la misma variable???
  #3 (permalink)  
Antiguo 20/08/2010, 02:32
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Problema con timer

Buenas

No entiendo muy bien lo que me comentas, si te pongo el código te ayudaría a darme una respuesta un poquito mas clara?

gracias por tu ayuda
  #4 (permalink)  
Antiguo 20/08/2010, 07:53
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Problema con timer

Hola

Lo que viene a decirte @maycolalvarez es que has de usar el método cleartimeout para limpiar el temporizador y poder empezar otros

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 20/08/2010, 08:56
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Problema con timer

Buenas

Muchas gracias, voy a probar haber si funciona mejor y comentare los resultados.

Muchas gracias.
  #6 (permalink)  
Antiguo 20/08/2010, 16:26
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Problema con timer

exactamente, además de tener una variable para almacenar el handler del timer, y así verificar que el mismo se está ejecutado, para no repetirlo y borrarlo
  #7 (permalink)  
Antiguo 21/08/2010, 02:54
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Problema con timer

Buenas

Provando he conseguido algo parecido a lo que estava buscando pero aun asi sigue apareciendo este aumento repentino de la velocidad. Voy a poner el codigo y un ejemplo en mi servidor para que podais ver que esta pasando haber si alguien puede encontrar la solucion.

<script type="text/javascript">
x = 0;
timer_on = 1;
function moure(id)
{
t1=setTimeout("moure("+id+")",10);
document.getElementById(id).style.top = x;
x = x + 1;

if(x > 30)
{
document.getElementById(id).style.top = 0 +"px";
x = 0;
clearTimeout(t1);

}
}

</script>

[URL="http://thinkbests.sytes.net/sando"]http://thinkbests.sytes.net/sando[/URL]


Muchas Gracias por vuestra ayuda.
  #8 (permalink)  
Antiguo 21/08/2010, 04:10
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Problema con timer

Hola

Prueba así
Código Javascript:
Ver original
  1. x = 0;
  2. timer_on = 1;
  3. function moure(id)
  4. {
  5.  
  6. document.getElementById(id).style.top = x;
  7. x += 1;
  8.  
  9. if(x > 30)
  10. {
  11. document.getElementById(id).style.top = 0 +"px";
  12. x = 0;
  13. clearTimeout(t1);
  14. } esle {
  15. t1=setTimeout("moure(id)",10);
  16. }

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #9 (permalink)  
Antiguo 21/08/2010, 04:32
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Problema con timer

Buenas

Ahora ya no hace el aumento de velocidad!!!! Muchas gracias! Ahora tiene algún otro fallo pero bueno eso ya es otra cosa.
Me podrías explicar porque con tu código no pasa? la única diferencia es que tu as puesto al revés la condición if con un else. No pensé que con eso pudiera llevar esos problemas.

Muchas gracias por vuestra ayuda!
  #10 (permalink)  
Antiguo 21/08/2010, 05:17
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Problema con timer

Hola

Parece que lo has entendido. Fíjate que tal y como tu lo haces, llamas a la función una vez tras otra sin dar la oportunidad de aumentar el valor de la propiedad top, ni hacer la evaluación. Un temporizador se usa para una vez que se ha recorrido toda la función volver a recorrerla una vez tras otra

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 21/08/2010, 05:34
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Problema con timer

Muchas gracias por tu ayuda, menudo fallo mas tonto que he hecho xD.

Muchas gracias por vuestra ayuda.

Etiquetas: time
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 06:18.