Paralelamente al problema que me ha surgido durante el diseño de mi juego de combate por turnos (podéis leer de qué va en este enlace, me han surgido varias necesidades relacionadas con la ejecución secuencial de código en flash.
Os pongo un ejemplo parecido al que tengo: primero tengo un movieClip llamado "Anim_nave_1" al cual he definido varios keyframes con sus correspondientes nombres y animaciones, por ejemplo "parado", "aparecer","disparar", "explosion" y "desaparecer"; por otro lado en cierto fotograma del código raíz tengo algo como esto:
Código ActionScript :
(...) //Hay lucha entre dos naves, y aparecen ambas por pantalla //NaveJ1 es la del player //NaveCPU es la de la CPU _root.Anim_nave_1.gotoAndPlay("aparecer"); //Determinamos el tipo de nave a la que atacamos para decidir //qué animación ejecutar if(NaveCPU.tipo == NAVE_1){ //Cargamos la animación de entrada de la nave 1 _root.Anim_nave_1_CPU.gotoAndPlay("aparecer"); //LO QUE NECESITO: que flash se pare aquí hasta que la animación //anterior haya terminado } else if(NaveCPU.tipo == NAVE_2){ //Cargamos la animación de entrada de la nave 2 _root.Anim_nave_2_CPU.gotoAndPlay("aparecer"); //LO QUE NECESITO: que flash se pare aquí hasta que la animación //anterior haya terminado } //Cargamos la animación de la nave atacando a la CPU: _root.Anim_nave_1.gotoAndPlay("disparar"); //DE NUEVO NECESITO QUE EL CÓDIGO SE PARE AQUÍ HASTA QUE LA //ANIMACIÓN ANTERIOR HAYA TERMINADO! NaveCPU.vidas -= NaveJ1.power; if (NaveCPU.vidas<=0){ _root.Anim_nave_1_CPU.gotoAndPlay("explosion"); //NUEVAMENTE NECESITO UNA PAUSA NaveCPU.removeMovieClip(); } else { //Contraataque de la nave enemiga _root.Anim_nave_1_CPU.gotoAndPlay("disparar"); //DE NUEVO NECESITO QUE EL CÓDIGO SE PARE AQUÍ HASTA QUE LA //ANIMACIÓN ANTERIOR HAYA TERMINADO! NaveJ1.vidas -= NaveCPU.power; if (NaveCPU.vidas<=0){ _root.Anim_nave_1.gotoAndPlay("explosion"); //NUEVAMENTE NECESITO UNA PAUSA NaveJ1.removeMovieClip(); } }
Como veis, necesito hacer una pausa en el código hasta que la animación de las naves termine. He probado con stop(), mediante bucles de while pero nada funciona (sobretodo porque los de while me saturan la CPU y termino cerrando el flash porque ya no responde).
¿Alguna sugerencia? Gracias de antemano!