Tutorial 7 - Control de la línea de tiempo

Paso 7 de 11

Si pulsamos dos veces sobre cualquiera de los otros pájaros, veremos que nos lleva al mismo clip bird original, al que ya hemos dado los nombres de instancia wing1_mc y wing2_mc.

Probemos a detener un ala de un pájaro. Para ello tendremos que añadir la siguiente línea de código dentro de función stopMovie:

bird1_mc.wing1_mc.stop();

de tal forma que la función stopMovie quede como sigue:

function stopMovie(e:MouseEvent):void
{
    stop(); 
    play_btn.visible = true;
    pause_btn.visible = false;
    bird1_mc.wing1_mc.stop();
}

Probamos la película y pulsamos sobre el botón pause_btn. El ala izquierda del primer pájaro se detendrá a la vez que la línea de tiempo principal. Aunque reanudemos la película, este ala no volverá a reproducirse ya que no hemos escrito instrucciones para ello.

Antes de continuar, probemos a sustituir en la programación bird1_mc por bird3_mc, quedando la línea como sigue:

bird3_mc.wing1_mc.stop();

Si volvemos a probar la película, y pulsamos el botón pause_btn antes de que el pájaro 3 aparezca en escena, nos encontraremos con el siguiente error:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
    at tutorial7_fla::MainTimeline/detener()

Esto quiere decir que al pulsar el botón para detener la película y ejecutarse la función stopMovie, se hace referencia a un objeto que no existe en ese momento (bird3_mc en este caso), y no puede por tanto ejecutar la instrucción de detener el ala de ese pájaro.

Pese a que esto no impide el funcionamiento correcto de nuestra película, para evitar este error comprobaremos qué pájaros están en el escenario en el momento de pulsar los botones, y sólo ejecutaremos las instrucciones para detener las alas de esos pájaros.