Comunidad de diseño web y desarrollo en internet online

Problema con Key.isDown...

Citar            
MensajeEscrito el 26 Jul 2011 11:03 pm
Bueno hace varios años que hago juegos y animaciones y esas cosas...

emm he estado buscando un foro donde me puedan ayudar con el flash en algunas dudas que me surgen de vez en cuando.. y esto es lo unico que encontre donde te contestan..

Asique.. soy nuevo en cristalab :D

Bueno el problema es que, uso un codigo masomenos asi para el GOLPE de mi personaje:

onClipEvent(enterFrame){
if(Key.isDown(Key.CONTROL))
this.play()
else this._parent.gotoAndStop("parado");
}



Osea que si apreto la tecla CONTROL se ejecuta esa accion del personaje, ( dentro del mc personaje estan todas sus acciones separadas y nombradas, "parado", "golpe" , "caminar1" y "caminar2"...

En fin , a eso le agrego al fotograma del golpe que si ESE fotograma TOCA al enemigo se le reste vida entonces queda bien...

Pero hay algo que no me gusta, lo PRIMERO es que mantenes apretado CONTROL y la animacion del golpe se ejecuta TODO el tiempo osea, cuando termina vuelve a empezar y me gustaria que solo se reproduzca una vez, es decir que para golpear tenga que apretar control y luego soltarlo y para tener que hacer otro golpe apretar control denuevo ....

y Aca viene el 2do problema , como es "Key.isDown" significa que es cunado la tecla esta PRESIONADA que se ejecuta la animacion, entonces, si la suelto la animacion se corta y tambien me gustaria sacarselo, es decir que, aprete control y luego lo suelte , y la animacion se siga ejecutando hasta el final pero que luego tenga que apretar control para volver a pegar, y asi todo el tiempo :P

Me explique bien? si siguien teniendo dudas diganme y trato de ser mas claro,

MUCHAS GRACIAS espero que me ayuden.

PD: Probe con " key.isPressed" o algo asi dentro del controlador "ON" tambien, pero no me funciono , es lo mismo que "key.isDown",

porfavor ayudenme!

Por Doistak

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Jul 2011 01:47 pm
Deberías manejar el teclado por eventos, no en un onEnterFrame, mirate Key.addEventListener

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Jul 2011 05:24 pm
Como va esa función? me la explícas?

Por Doistak

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Jul 2011 05:46 pm
Está en la ayuda de AS2, pero te copypasteo un pedazo>

Código ActionScript :

var myListener:Object = new Object();
myListener.onKeyDown = function () {
    trace ("You pressed a key.");
}
myListener.onKeyUp = function () {
    trace ("You released a key.");
}
Key.addListener(myListener);


Además de capturar el evento, con Key.getCode() sabes que tecla se pulsó (las constantes ayudan en eso) ¿Hace años que haces juegos y no conocías esto?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Jul 2011 06:58 pm
No, no lo sabia jaja nunca vi necesidad de utilizarlo, es mas aun no se para que sirve...

No entiendo como puede ayudarme en mi problema, detectando que tecla se pulsó... yo lo que busco es alguna funcion que haga que la animacion no se repita infinitas veces, sino una sola vez al presionar la tecla, cosa que tenga que apretar denuevo para volver a ejecutar la animacion...

Por Doistak

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Jul 2011 07:42 pm
A ver, pensemos, ¿que diferencia hay entre detectar una tecla en un onEnterFrame y en un evento?
Que en el primer caso se dispara constantemente (play todo el tiempo), en el segundo una sola vez. Incluso si escuchas el evento onKeyUp sabes cuando se solt{o la tecla.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Jul 2011 08:46 pm
Bueno punto, igualmente, no funciona :S asi me quedo el codigo, que tengo mal?

apreto izquiera y se mueve la bola roja, pero se mueve mas de 5 px al mantener apretado..:S

Código ActionScript :

var myListener:Object = new Object();
myListener.onKeyDown = function() {
   if (Key.getCode() == Key.LEFT) {
      _x -= 5;
      trace("You pressed a key.");
   }
};
myListener.onKeyUp = function() {
   trace("You released a key.");
};
Key.addListener(myListener);

Por Doistak

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Jul 2011 09:07 pm
SI queres te paso el .fla para que lo veas D:

Por Doistak

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 28 Jul 2011 02:03 am
Eso es porque se activa la repetición, es un feature del teclado. Usa un flag para evitarlo:

Código ActionScript :

var myListener:Object = new Object(); 
var down:Boolean = false;
myListener.onKeyDown = function() { 
   if (Key.getCode() == Key.LEFT && !down) { 
           _x -= 5; 
     down = true;
      trace("You pressed a key."); 
   } 
}; 
myListener.onKeyUp = function() {
   down = false;
   trace("You released a key."); 
}; 
Key.addListener(myListener); 


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Jul 2011 03:50 am
GRACIAS JORGEEEEEE :D!!


me sirvio, me sacaste un gran peso de encima!!, voy a anotar el codigo asi lo tengo siempre :D!

ahora una cosita, me lo podrias explicar?

como por ejemplo :

ese "Boolean" que significa, no se que es :P muchas gracias!!!

Por Doistak

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 28 Jul 2011 03:59 am
Èvita que se repita el primer if, porque lo pasa a true, vuelve a false y permite que se haga el primer if recien cuando sueltas la tecla. Se lo suele llamar un flag

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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