Comunidad de diseño web y desarrollo en internet online

Mover MC con teclado

Citar            
MensajeEscrito el 13 Ene 2010 11:03 pm
Hola estoy haciendo una tonteria en flash con sprites y logre hacer que mi personaje se mueva , usando el teclado

Pero el problema es que cuando uso el teclado para correr dejando apretado la tecla .. el personaje realiza solo una secuencia de animacion ( solo una pasada de frames .. en lugar de repetir el loop que tiene puesto ) o sea corre 2 segundos ..y para ( se sigue moviendo el MC pero no el personaje con los sprites =

Lo arme de la siguente forma :
Un flash Base con un cagador ( MC vacio ) donde se carga el swf externo que es el personaje animado
En este nivel tengo solo esta la linea para cargar el MC


Código ActionScript :

contenedor.loadMovie("ninja.swf")  //carga el ninja en el contenedor



y en el MC vacio de este flash esta el script para moverlo con las teclas :

Código ActionScript :

onClipEvent(enterFrame) {

    if (Key.isDown(Key.UP)) {
       this._y = this._y - 5 ;
   } else if (Key.isDown(Key.LEFT)) {
        this._x = this._x - 5 ;
    } else if (Key.isDown(Key.RIGHT)) {
        this._x = this._x + 5 ;
    } else if (Key.isDown(Key.DOWN)) {
        this._y = this._y + 5 ;
   }
}


Luego en un swf externo que tiene la animacion del ninja con los sprites tengo un detector de teclas que realiza una animacion basandose en las teclas que presione .. saltar correr iz .. correr derecha .. etc etc ..

Código ActionScript :

var teclado:Object = new Object();


teclado.onKeyDown = function() {
    if (Key.isDown(Key.UP)) {
        gotoAndPlay("arriba", 16);
   } else if (Key.isDown(Key.LEFT)) {
        gotoAndPlay("rundiz", 9);
    } else if (Key.isDown(Key.RIGHT)) {
        gotoAndPlay("runder", 2);
    } else if (Key.isDown(Key.DOWN)) {
        gotoAndPlay("abajo", 32);
    } else if (Key.isDown(Key.SPACE)) {
        gotoAndPlay("saltoder", 24);

      
      
   } else {
      gotoAndPlay("stop", 1);
    }
};





Key.addListener(teclado);



Aca esta el final :








link por si no se ve :


[url=http://www.manthys.com.ar/test/base.swf][/url]

Por edejuana

13 de clabLevel



 

msie7
Citar            
MensajeEscrito el 13 Ene 2010 11:29 pm
aca esta la animacion del ninja sola

Si dejan apretado el boton se para el loop .. si lo sueltan lo continua sin probelmas.


Por edejuana

13 de clabLevel



 

msie7
Citar            
MensajeEscrito el 14 Ene 2010 03:14 am
Pues te falta evaluar cuando levantes la tecla deje de hacerlo. Porque lo que ahora has hecho es decirle que una vez ejecute el código al presionar una tecla. Pero debe continuar hasta detectar que la tecla fue levantada. Flash no seguirá ejecutando una y otra vez sino.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 14 Ene 2010 05:03 pm
hernan gracias por la rta , igualmente aun no pase a la fase dos de levantar la tecla estoy en la fase uno de .. apretar la tecla y que el personaje se mantenga corriendo (si haces click en el flash del ninja y usas teclas de derecha e izquierda , vas a ver que si dejas apretada la tecla hacia la derehca por ejemplo , corre unos segundos y se para ).

quizas se me ocurre que al dejar apretada la flecha no esta permitiendo que el loop de animacion de sprites se mantenga sino que empiece una y otravez como cuando apretas muchas veces la misma tecla (rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmentar es -rrrrrrrrrrrrrr)

si soltas la tecla el loop se hace normalmente y de ahi el que siga corriendo por siempre (que por ahora no me preocupa eso )

algo que se me ocurre pero que no se si se pueda implentar es que detecte la primer presion e ignore el resto (hasta que se detecte que levanto la tecla o que presiono otra )

Por edejuana

13 de clabLevel



 

msie7
Citar            
MensajeEscrito el 14 Ene 2010 07:06 pm
Es que lo que te estoy diciendo debe ser evaluado para hacerlo. Básicamente la lógica es:

1. Aprieto, comienza un loop (Usando setInterval) que movera el personaje
2. Suelto, mato el loop

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 15 Ene 2010 01:26 am
voy a revisar por ese lado y te digo !

gracias.

Por edejuana

13 de clabLevel



 

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.