Comunidad de diseño web y desarrollo en internet online

Como resumir todas estas funciones en un switch??

Citar            
MensajeEscrito el 11 Jun 2013 01:43 am
Hola a todos! Resulta que quiero hacer un jueguito simple, pero al momento de hacer que el monito se mueva, me saltan estos problemas (no, no son de error de código).

Tengo el AS3 tal que así:

Código :

/* == Para mover al personaje == */
direccion_derecha.addEventListener(MouseEvent.MOUSE_DOWN,mover_derecha);
function mover_derecha(event:MouseEvent):void
{
   Object(this).jugador.x ++;
}
direccion_izquierda.addEventListener(MouseEvent.MOUSE_DOWN, mover_izquierda);
function mover_izquierda(event:MouseEvent):void
{
   Object(this).jugador.x -= 20;
}
direccion_abajo.addEventListener(MouseEvent.MOUSE_DOWN, mover_abajo);
function mover_abajo(event:MouseEvent):void
{
   Object(this).jugador.y += 20;
}
direccion_arriba.addEventListener(MouseEvent.MOUSE_DOWN, mover_arriba);
function mover_arriba(event:MouseEvent):void
{
   Object(this).jugador.y -= 20;
}


Sé que se puede hacer que se mueva en una sola función y que cada boton hará algo distinto. Ese es el tema, ¿cómo hacerlo?

NOTA: Está orientado a dispositivos tocuh, NO se debe usar el teclado. Por esta misma razón, me gustaría saber si es posible que mientras mantenga pulsado un boton en el swf, se mantenga haciendo la acción. O sea, que si con el dedo (o mouse, el chiste es no usar el teclado) mantengo presionado el boton que mueve al personaje a la izquierda, siempre se mueva, y NO se ejecute UNA SOLA VEZ; porque así como está, solo me lo mueve 20 cada que lo presiono.

De antemano, gracias por su ayuda :)

Por hydrako

7 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Jun 2013 01:29 pm
Supongamos que los botones se llaman arriba, abajo, derecha, izquierda, entonces a todos le agregas un listener a la misma funcion que distingue por nombre del boton que lo llama

Código ActionScript :

function mueve(evt:MouseEvent):void{
     var velocidad:int = 20
     switch(evt.target.name){
        case "derecha":
              jugador.x +=vel;
              break;
        case "izquierda":
              jugador.x -=vel;
             break;
        case "arriba":
              jugador.y-=vel;
              break;
         case "abajo":
             jugador.y+=vel;
            break;
    }
}


Para que suceda constantemente, tienes que usar un onEnterFrame

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 11 Jun 2013 04:55 pm
Entonces a cada botón, en el listener tendré que ponerle que vaya a la misma función? Eso no me arrojaría un error?

Por hydrako

7 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Jun 2013 06:22 pm
¿lo probaste?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 12 Jun 2013 12:43 am
Si, me arrojaba un error, pero era por el nombre de variable, declarada se llamaba "velocidad" y en el switch era "vel". Ahora, creo que no lo he comprendido del todo, porque no me hace mover el jugador. Que tengo que reemplazar ese código para que funcione en el mio :S?

Creo que esa duda estará en "(evt.target.name)". La verdad no comprendo del todo esa función :S

Gracias de nuevo n_n

Por hydrako

7 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Jun 2013 07:14 am
BuenAS:

Cuando creas una función controladora de los eventos del ratón (MouseEvent), en tu caso, la función "mueve", le llega un parámetro evt (un evento de ratón) que tiene la propiedad target que es el símbolo sobre el que has pulsado con el ratón

Por tanto en evt.target lo que tienes es el símbolo, en tu caso un botón, sobre el que se pulsa en cada momento. Si pulsas sobre el botón derecha, tendrás el botón derecha, si pulsas sobre el izquierda, el botón izquierda, etc.

Así, en la propiedad evt.target.name tienes el nombre del bótón y es con lo que Jorge te dijo que hicieras el switch.

coloca en la función mueve un trace(evt.target.name); y verás que cada vez que pulsas obtienes el nombre del botón pulsado.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome

 

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