Comunidad de diseño web y desarrollo en internet online

Ayuda....movimiento de personaje as3

Citar            
MensajeEscrito el 08 May 2011 05:19 pm
Hola, estoy tratando de mover un personaje con as3 para un juego, tengo lo siguiente:

Código ActionScript :

function mover(event:KeyboardEvent):void
{
   if (event.keyCode == 37)
   {
      this.hero.x -=  7;
   }
   else if (event.keyCode == 39)
   {
      this.hero.x +=  7;
   }
   else if (event.keyCode == 38)
   {
      this.hero.y -=  7;
   }
}


El problema es que si quiero que se mueva en diagonal, izquierda-arriba o derecha-arriba, no funciona y es justamente lo que quiero lograr, espero que alguien me pueda ayudar, de antemano muchas gracias.

Por daniel0289

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 09 May 2011 02:34 pm
Lo que tienes que hacer es setear un flag cuando tengas una de las teclas oprimida, luego en la otra chequeas que exista el flag, esto es porque flash aún cuando las oprimas simultáneamente, detectará primero una y después la otra

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 May 2011 03:21 am
o tambien lo puedes lograr de la siguiene manera

Código ActionScript :

 var keyLeftPressed:Boolean;  
 var keyRightPressed:Boolean;  
 var keyUpPressed:Boolean;  
 var keyDownPressed:Boolean; 
 
 
 stage.addEventListener(KeyboardEvent.KEY_DOWN,keyPressed);  
 stage.addEventListener(KeyboardEvent.KEY_UP,keyReleased);  
 addEventListener(Event.ENTER_FRAME,mover,false,0,true)
 
   function keyPressed(event:KeyboardEvent)
{     
       if (event.keyCode == Keyboard.LEFT)           keyLeftPressed = true;  
       if (event.keyCode == Keyboard.RIGHT)          keyRightPressed = true;  
       if (event.keyCode == Keyboard.UP)             keyUpPressed = true;  
       if (event.keyCode == Keyboard.DOWN)          keyDownPressed = true;  
}  
      
    function keyReleased(event:KeyboardEvent) 
{  
        if (event.keyCode == Keyboard.LEFT)            keyLeftPressed = false;  
        if (event.keyCode == Keyboard.RIGHT)           keyRightPressed = false;  
        if (event.keyCode == Keyboard.UP)              keyUpPressed = false;  
        if (event.keyCode == Keyboard.DOWN)           keyDownPressed = false;  
}  

function mover(evento:Event):void
{
   if (keyLeftPressed)mc.x-=12
   if (keyRightPressed)mc.x+=12
   if (keyUpPressed)mc.y-=12
   if (keyDownPressed)mc.y+=12
}



saludos Maxx

Por MaxiiSan20

Claber

168 de clabLevel



Genero:Masculino  

Montevideo

firefox
Citar            
MensajeEscrito el 10 May 2011 02:20 pm
Eso es lo que quiero decir MaxiSans, el flag es un booleano que indica que la tecla ha sido oprimida, luego si está oprimida haces algo. En los if para combinaciones tienes que hacer algo como:

Código ActionScript :

if(keyLeftPressed && keyUpPressed ){
   //hacer algo
}


Luego si es el movimiento del personaje amerita usar un onEnterFrame, pero si es algo mas circunstancial quizás arrancaría el onEnterFrame en el keyPressed y lo mataría en el keyReleased

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 May 2011 02:43 pm
Sabes después de postear quede pensando es que no entiendo muy bien a veces las palabras que usan, pero lo imagine.
Saludos.

Por MaxiiSan20

Claber

168 de clabLevel



Genero:Masculino  

Montevideo

firefox
Citar            
MensajeEscrito el 10 May 2011 02:45 pm
Es cuestión de ir acostumbrandose, puede ser solo un tecnicismo, pero en ciertos ambientes de trabajo es una necesidad ya que las instrucciones suelen ser muy escuetas y técnicas

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 May 2011 11:51 pm
Si realmente, al iniciarme en el foro realmente entendía muy poco ya que también conocía muy poco sobre programación y demás, poco se va avanzando en muchas dirección, muy bueno.

Por MaxiiSan20

Claber

168 de clabLevel



Genero:Masculino  

Montevideo

firefox

 

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