Estoy empezando en esto del AS3 y me encuentro con un problema curioso a la hora de intentar ejecutar una animación de un mc. Me explicaré mejor:
En un juego tengo la instancia «jugador» el cual tiene en su frame 1 la instancia movie clip «one» (que posee diversas animaciones del jugador: esperar, andar, correr, saltar y agacharse; etiquetadas con esos mismos nombres en sus respectivos frames en la capa "labels"), y en su frame 2 esta la instancia «oneDead» (cuya única función de esta instancia es la animación de la muerte del jugador).
Con la siguiente función (en donde ship=jugador.one) no tengo ningún problema para que se ejecute la animación de la muerte:
Código :
function muerte (e:Event) : void { if ( vida == 0) { jugadorSano = false; vidas --; if (vidas == 0) { //trace ("no te quedan más vidas, vuelve más tarde"); marcador.textoVidas.text = vidas; jugador.scaleX = 1; jugador.gotoAndStop(2); } else if (vidas >0) { marcador.textoVidas.text = vidas; vida = 10000; jugador.scaleX = 1; jugador.gotoAndStop(2); //inicia la animación de la instancia oneDead } } }
El problema surge cuando en el último frame (el 40) de la animación de la instacia «oneDead» no consigo que vuelva a ejecutar con corrección la función de las animaciones del jugador siguiente (la cual se encuentra en el mainTimeLine:
Código :
function mover (e:Event): void { //dependiendo si toca suelo hará una u otra cosa if (suelo.hitTestPoint (jugador.x, jugador.y+jugador.height/2, true)) { //mientras este sobre el suelo while (suelo.hitTestPoint(jugador.x, -2+jugador.y+jugador.height/2, true)){ jugador.y--; //corrección automática de posición } if (movArriba) { yvel=salto; jugador.y += yvel; ship.scaleY = 1; ship.gotoAndStop("saltar"); } if (movIzquierda){ //primero miramos si pulsa mayusculas y tiene el cheat correr activado if ((cheatCorrer) && (mayusculas)){ jugador.x -= xvel2; ship.scaleX = -1; if (jugador.x<=0 + (jugador.width/2)) { jugador.x=30; } ship.gotoAndStop ("correr") } else { jugador.x -= xvel; ship.scaleX = -1; if (jugador.x<=0 + (jugador.width/2)) { jugador.x=30; } ship.gotoAndStop("andar"); } } else if (movDerecha){ if ((cheatCorrer) && (mayusculas)){ jugador.x += xvel2; ship.scaleX= 1; if (jugador.x>=stage.stageWidth - (jugador.width/2)) { jugador.x=stage.stageWidth - (jugador.width/2); } ship.gotoAndStop ("correr") } else { jugador.x += xvel; ship.scaleX = 1; if (jugador.x>=stage.stageWidth - (jugador.width/2)) { jugador.x=stage.stageWidth - (jugador.width/2); } ship.gotoAndStop("andar"); } } else if (movAbajo){ ship.scaleY = 1; ship.gotoAndStop("agacharse"); } else { ship.gotoAndStop(1); } } else if (suelo.hitTestPoint (jugador.x, jugador.y-jugador.height/2, true)) { yvel=yvel*-1; //cambia de signo jugador.y += yvel; //disminuye la posicion while (suelo.hitTestPoint (jugador.x, jugador.y-jugador.height/2, true)){ jugador.y++; //corrección automática de posición } } else { //caída libre del muñeco jugador.y +=yvel; if (yvel<=limite){ yvel++; } if (movIzquierda){//para poder moverlo durante el salto jugador.x -= xvel; ship.scaleX = -1; if (jugador.x<=0 + (jugador.width/2)) { jugador.x=30; } if (jugador.x>=stage.stageWidth - (jugador.width/2)) { jugador.x=stage.stageWidth - (jugador.width/2); } ship.gotoAndStop("saltar"); } else if (movDerecha){//para poder moverlo durante el salto jugador.x += xvel; ship.scaleX = 1; if (jugador.x<=0 + (jugador.width/2)) { jugador.x=30; } if (jugador.x>=stage.stageWidth - (jugador.width/2)) { jugador.x=stage.stageWidth - (jugador.width/2); } ship.gotoAndStop("saltar"); } else if (movArriba) {//solo por la animación ship.scaleY = 1; if (jugador.x<=0 + (jugador.width/2)) { jugador.x=30; } if (jugador.x>=stage.stageWidth - (jugador.width/2)) { jugador.x=stage.stageWidth - (jugador.width/2); } ship.gotoAndStop("saltar"); } } }
He intentado con «Object (root).jugador.gotoAndStop(1)» o «…gotoAndStop(“esperar”)» o «MovieClip (root).jugador.gotoAndStop(1)». Así ejecuta la animación del frame “esperar” y ninguna más, aunque el muñeco se mueve igual por la pantalla.
Si pongo MovieClip (this.parent.child).one.gotoAndStop (1); // el error es el 1119.
Sin embargo con MovieClip (this.parent).one.gotoAndStop (1); // el error es el 1009.
Deduzco que algo sucede con la propiedad «one» del moviclip «jugador» pero no sé que puede ser. Por ello os pido ayuda, por favor. ¿Alguien sabe que puede suceder?