Comunidad de diseño web y desarrollo en internet online

problema con la clase keys y la reproduccion de un mc

Citar            
MensajeEscrito el 26 Jul 2005 03:45 am
Aqui les cuento el lio...

soy un novato novatillo, espero que no se me note al hablar del problema que tengo, pero practicando quise hacer que un mc hiciera movimientos con las flechas direccionales del teclado, como si fuese un juego, claro que no lo es, bueno, lo hice dentro del mismo mc, usando onClipEvent, y luego los if, else, para introducir las instrucciones de cada movimiento, cuando presiono up, la cabeza lectora va a un clip dentro del principal y lo reproduce asi el personaje cambia de la apariencia de reposo a la de volar, y asi en todos usando _root.principal.gotoAndStop () siendo principal el clip de inicio... hasta aqui me guie del ejemplo que tiene mi version de flash mx, y solo es mx creo que es el 6, bueno... y el problema es que a la hora de introducir otro movimiento con las teclas como la letra "h" para que ejecute la animacion dentro del clip principal no me funciona... soy nuevo y en mi pobre capacidad lo he intentado todo, he leido los tutos y aun no se como hacerle para que salga...

espero me puedan ayudar gracias...

Por J O S

712 de clabLevel

1 tutorial

Genero:Masculino  

Lima, Perú

msie
Citar            
MensajeEscrito el 26 Jul 2005 04:35 am
Cuando no se tratan de teclas comunes como "Escape, CTRL, ALT, UP, etc" flash utiliza una codificacion para las restantes teclas. La podes ver en la siguiente tabla:

Código :

Letra         Codigo
  |A|          |65|
  |B|          |65|
   .             .
   .             .
   .             .
  |Z|          |90|

--------------------

  |0|          |48|
  |1|          |69|
   .             .
   .             .
   .             .
  |9|          |57|


Sabiendo el codigo para cada tecla, podemos dar las acciones de esta menera:

Código :

tu_pelicula.onEnterFrame = function() {
   if (Key.isDown(65)) {
      trace("presionaste la tecla A");
      //Mas acciones...
   }
};


Espero que te haya servido para aclarar mas el panorama. Saludos ^^

Por dave73

985 de clabLevel

5 tutoriales

 

Argentina, Córdoba

firefox
Citar            
MensajeEscrito el 30 Jul 2005 09:24 pm
^^ gracias... eso que me dices es parecido a lo que hice, pero creo que no me explique bien.

Código :

onClipEvent (enterFrame) {
   myListener = new Object("uno");
   myListener.onKeyUp = function() {
      _root.uno.gotoAndPlay("stand");
   };
   Key.addListener(myListener);
}
onClipEvent (load) {
   // declare and set speed variable
   speed = 15;
}
onClipEvent (enterFrame) {
   //***derecha********************
   if (Key.isDown(Key.RIGHT) && !Key.isDown(Key.LEFT) && !Key.isDown(Key.DOWN) && !Key.isDown(Key.UP)) {
      _x += speed;
      _root.uno.gotoAndStop("adelante");
   }
   //***izquierda*********************
   if (Key.isDown(Key.LEFT) && !Key.isDown(Key.RIGHT) && !Key.isDown(Key.DOWN) && !Key.isDown(Key.UP)) {
      _x -= speed;
      _root.uno.gotoAndStop("atras");
   }
   //***Abajo****************************
   if (Key.isDown(Key.DOWN) && !Key.isDown(Key.RIGHT) && !Key.isDown(Key.LEFT) && !Key.isDown(Key.UP)) {
      _root.uno.gotoAndStop("abajo");
      if (_y<350) {
         _y += speed;
      }
   }
   //diagonal adelante abajo
   if (Key.isDown(Key.DOWN) && Key.isDown(Key.RIGHT) && !Key.isDown(Key.LEFT) && !Key.isDown(Key.UP)) {
      _root.uno.gotoAndStop("adelante");
      _x += speed;
      _y += speed;
   }
   //diagonal atras abajo
   if (Key.isDown(Key.DOWN) && Key.isDown(Key.LEFT) && !Key.isDown(Key.RIGHT) && !Key.isDown(Key.UP)) {
      _root.uno.gotoAndStop("atras");
      _x -= speed;
      _y += speed;
   }
   //***arriba*****************************
   if (Key.isDown(Key.UP)) {
      _root.uno.gotoAndStop("arriba");
      _y -= speed;
      //***arriba diagonal adelante*****
      if (Key.isDown(Key.RIGHT)) {
         _x += speed;
      }
   } else {
      if (_y<340 && !Key.isDown(Key.RIGHT) && !Key.isDown(Key.LEFT)) {
         _root.uno.gotoAndStop("volar");
      }
   }
   //arriba atras diagonal
   if (!Key.isDown(Key.DOWN) && Key.isDown(Key.LEFT) && !Key.isDown(Key.RIGHT) && Key.isDown(Key.UP)) {
      _root.uno.gotoAndStop("atras");
      _y -= speed;
      _x -= speed;
   }
   //***Limite****************************
   if (_y<50) {
      _y = 50;
   }
   if (_y>350) {
      _y = 350;
   }
   if (_x<36) {
      _x = 36;
   }
   if (_x>610) {
      _x = 610;
   }
   //ataques***********************************
   //
   if (Key.isDown(72)) {
      _gotoAndPlay("veloz");
   }
}


Ahora, por ejemplo, cundo presiono la tecla "h", usando su codigo ,
el clip no me reproduce, y si lo hace solo lo hace cuando mantengo
presionado la tecla, si la suelo no la reproduce.

Es decir, el mc que quiero que reprodusca al presionar la tecla "h" tiene 5 frames, en los cuales el personaje realiza un movimiento, un golpe con el puño, con el codigo que tengo no me funciona.

Pero al principio cuando no tenia tanto codigo y funciones solo funcionaba cuando mantenia presionado la tecla "h" si la soltaba se cortaba la secuencia y regresaba a la posision inicial, gracias al codigo que tengo al principio del AS.

¿Puede que el problema sea que todo el codigo lo tengo en un move clip que es
el principal, (dentro de este estan los demas clips, como el de avanzar,
retroceder, agacharce, volar, atacar, etc, etc)?

Viendo el As que he hecho, me pueden ayudar, lo que quiero es que con solo un toque de
la tecla asignada se reprodusca un mc hasta el final, con un solo toque, y no uno sostenido.

Gracias por su ayuda.

Por J O S

712 de clabLevel

1 tutorial

Genero:Masculino  

Lima, Perú

msie
Citar            
MensajeEscrito el 30 Jul 2005 09:28 pm
Yo pondria condicionales. Que evaluen variables enviadas desde las animaciones. Ejemplo la del puño. Y le diria quye hasta que no termine de ejecutar la animacion. No se pueda volver a apretar la "h". No se. :?

Por dave73

985 de clabLevel

5 tutoriales

 

Argentina, Córdoba

firefox
Citar            
MensajeEscrito el 30 Jul 2005 09:37 pm
esto es lo que tengo y probarè con lo que me dices... gracias.

[url]

http://us.f2.yahoofs.com/bc/417342ef_f604/bc/animaciones/hiro2.swf?bfWj_6CBsmGLi5.z

[/url]

[url]
http://us.f2.yahoofs.com/bc/417342ef_f604/bc/animaciones/hiro2.swf?bfzzD7CBO5aJi5.z
[/url]

gracias... pongo dos link pues ami uno no me funciona pero cuando me dices que si lo viste me causo duda... bueno aun no puedo arreglar el problema... este muchacho no golpea ya tiene la animacion, y el codigo que supuestamente lo haria golpear pero no pasa nada, si te fijas, cuando esta en el suelo, y presionas cualquier tecla menos las direcionales las animaciones (todas las que se encuentran en el principal) son repoducidas... me da coraje... no se me ocurre nada.. :twisted:

Por J O S

712 de clabLevel

1 tutorial

Genero:Masculino  



Ultima edición por J O S el 31 Jul 2005 02:30 am, editado 3 veces

Lima, Perú

msie
Citar            
MensajeEscrito el 30 Jul 2005 09:40 pm
Coool! estuve un par de minutos volando con el muchacho! :lol: Vas bien!

Por dave73

985 de clabLevel

5 tutoriales

 

Argentina, Córdoba

firefox
Citar            
MensajeEscrito el 02 Ago 2005 03:37 am
corregi el problema, pues no me funcionaba los codigos en el mismo onclipEvent donde estaban los movimientos principales, y buscando en el diccionario de AS encontre este pequeño detalle.

Código :

//con esto funciona la tecla h para la accion de velocidad de hiro
onClipEvent (keyDown) {
   if (Key.getCode() == 72) {
      _root.uno.gotoAndPlay("veloz");
   }
   if (Key.getCode() == 71) {
      _root.uno.gotoAndPlay("atak1");
   }
}
//le agregamos esto para darle la velocidad pues en KeyDown no se realiza la 
//sumatoria consecutiva
//****VEloz****
onClipEvent (enterFrame) {
   if (_root.uno.veloz._currentframe>10) {
      _x += 30;
   }
   if (_root.uno.veloz._currentframe>15) {
      _x -= 28;
   }
}


y claro use _currentFrame para ver en que frame empieza el desplazamiento de hiro, pues no queria que avance de golpe sino que esperare unos instantes y luego salte.
Pero mi pregunta es esta, quiero que cada vez que haga esta operacion cerca de la lienea de horisote suelte una estela de polvo, no se como hacerla, creo que puedo usar el attachMovie, o como se escriba para llamar el clip de la estela de polvo en una posision presisa, detras de hiro, y claro para hacer uns efectos cuando atake, pero no se usarlo. ¿como uso attachMovie? ¿attachmovie es una forma de hacer esto, cual seria otra?.

Gracias por tu ayuda y tus animos dave, toda la ayuda es bienvenida, espero su colaboracion, gracias. ^^

Aqui se ve como esta quedando...
[url]
http://es.geocities.com/qwerty_jose/hiro3.swf
[/url]

Por J O S

712 de clabLevel

1 tutorial

Genero:Masculino  

Lima, Perú

msie

 

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