Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/06/2011, 22:31
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: setTimeout mientras otras acciones

buenas,
primero, no tiene sentido realizar la animacion o el proceso que fuera en el evento onload. especificamente porque onload se inicia cuando ya todo haya cargado, incluyendo las imagenes. la animacion tendrias que invocarla en una de dos formas: usando el evento DOMContentLoaded o invocando la animacion cuando gran parte de los elementos haya sido analizado por el navegador. el primero es un tipo de evento que aun no esta en gran difusion. dicho evento se dispara cuando el navegador ha terminado de analizar y crear el DOM sin tomar en cuenta el estado de otros recursos. por ejemplo, imagenes, video, audio, scripts, hoja de estilos, etc. el segundo, es la tecnica mas difundida. simplemente ubica el script al final del documento pero antes de la etiqueta </body>.

el segundo detalle es que la animacion solo se ejecuta una sola vez. a diferencia de setTimeout, setInterval se ejecuta por un periodo indefinido hasta que se detenga con clearInterval. con setTimeout se puede lograr el comportamiento de setInterval con tan solo hacer una invocacion recursiva a la misma funcion. una vez tengas la animacion en ciclo (setInterval o invocacon recursiva de setTimeout), en onload detienes la animacion. notese que la forma de detener cada tecnica son distinta. para setInterval solo basta con pasar el id a clearInterval mientras que con setTimeout debes implentar un patron de comprobacion del estado de un valor. por ejemplo, una variable con un boolean donde false indique aun no ha terminado de cargar los recursos (por tanto, la invocacion recursiva continua) y true para el caso contrario.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.