Ver Mensaje Individual
  #6 (permalink)  
Antiguo 05/11/2013, 12:01
Avatar de patkoala
patkoala
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 19
Respuesta: Ejecutar función u objeto en paralelo

¡Creo que al fin encontré la solución!
Igualmente si no es lo que esperabas, estaré encantado de intentar ayudarte.
El problema era que se generaban muchas llamadas a la misma función al mover el ratón por encima, por lo tanto se creaban muchos intervalos que movían el fondo a su ritmo.
He cambiado el ejemplo que me diste para solucionarlo, simplemente aplica los mismos cambios a tu código.
Código Javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Documento sin tlo</title>
  6. <script type="text/javascript">
  7. var animacion_activa = new Array();
  8. //Se crea un array que contiene referencias a los elementos que tiene una animacion activa
  9. function pelicula(elm,jumpPx,spriteHeight,duration){
  10.     if(animacion_activa.indexOf(elm)==-1){ //Se comprueba si la animación está activa o no
  11.         animacion_activa.push(elm); //Si no lo está, se añade al array y se crea el intervalo
  12.         var inc=0;
  13.         var time=setInterval(function(){
  14.            
  15.             if(inc<spriteHeight){
  16.                 inc+=jumpPx;
  17.                 //elm.style.backgroundPosition='0px -'+inc+'px';
  18.                 elm.innerHTML=inc;
  19.             }else{
  20.                 clearInterval(time);
  21.                 animacion_activa.splice(animacion_activa.indexOf(elm),1); //Por último, cuando el intervalo acaba, se remueve el elemento del array (ya no está activo)
  22.                 elm.style.backgroundPosition='0px -0px';          
  23.             }
  24.         },duration);
  25.     }
  26. }
  27.  
  28.  
  29. </script>
  30. </head>
  31.  
  32. <body>
  33.  
  34. <p onmouseover="pelicula(this,1,10,1000)">tiempo1</p>
  35. <p onmouseover="pelicula(this,1,10,1000)">tiempo2</p>
  36. </body>
  37. </html>