Tutorial 7 - Control de la línea de tiempo

Paso 10 de 11

Hasta aquí hemos visto cómo podemos controlar la cabeza lectora tanto de la línea de tiempo principal como de líneas de tiempo anidadas.

Ahora nos queda detener y reanudar el movimiento de las nubes, ya que este movimiento es independiente del desplazamiento de la cabeza lectora en la línea de tiempo principal.

El movimiento de cada nube lo habíamos creado en el tutorial anterior con el siguiente código:

cloud1_mc.addEventListener(Event.ENTER_FRAME, wind);
cloud2_mc.addEventListener(Event.ENTER_FRAME, wind);

Para que las nubes se detengan, será suficiente con eliminar los detectores del evento ENTER_FRAME. Para eliminarlos basta con copiar el mismo código que se usó para crearlos, y sustituir addEventListener por removeEventListener.

cloud1_mc.removeEventListener(Event.ENTER_FRAME, wind);
cloud2_mc.removeEventListener(Event.ENTER_FRAME, wind);

Por lo tanto, añadiremos las dos sentencias con removeEventListener a la función stopMovie antes de la última llave que marca el final de la función. Para que el movimiento se reanude después, añadiremos de nuevo en la función playMovie las dos sentencias con addEventListener.

Si además de querer detener el movimiento, quisiéramos que las nubes dejaran de ser arrastrables, tendríamos que seguir el mismo procedimiento, es decir, copiar la misma sentencia que utilizamos para agregar el listener y sustituir add por remove. En este caso vamos a permitir que las nubes puedan arrastrarse aunque la línea de tiempo esté detenida, así que no vamos a eliminar esos listeners.

El método removeEventListener puede ser muy útil en diversas circunstancias, por ejemplo para eliminar la interactividad de un botón o un clip sin necesidad de esconderlo ni eliminarlo del escenario.

Seleccionamos Control > Probar película. Ahora podemos detener y reanudar todas las animaciones (pájaros, alas y nubes).