Comunidad de diseño web y desarrollo en internet online

Captar 2 teclas a la vez

Citar            
MensajeEscrito el 29 Sep 2006 10:29 pm
Bueno, pues tengo un pj k se mueve a la derecha - izquierda, con If.Key is Down... y hago k ruede con if keypresss(Down).
Lo que pasa es k si lo muevo y a la vez pulso down, solo capta el movimiento, el keypress, solo si no pulso nada mas a la vez

No se si mexplicado bien, Pero

GRACIAS DE ANTEMANO

Por korger

13 de clabLevel



 

msie
Citar            
MensajeEscrito el 30 Sep 2006 12:53 am
La verdad que no, no te has explicado bien... ¿Podrías explicarte un poco mejor?

Tómate tu tiempo en el enunciado, buenas respuestas a buenas preguntas.

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

firefox
Citar            
MensajeEscrito el 30 Sep 2006 01:05 am
Y escribe bien por favor, que es pj? . No escribas como en un sms. Falicitanos la lectura, y no estar traduciendo cada vez que leemos una oración. Gracias

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 30 Sep 2006 10:04 am
ok,perdon (esque lo escribi co algo de prisa)
Bueno, pues yo tengo un movie clip que se mueve con las flechas DERECHA-IZQUIERDA (if.keyisdown) el mc tiene una animacion como si andase, y yo he echo para que cuando pulse (Keypress) la flecha DOWN reproducca una animacion como si rodasse, funciona bien, cuando puls oDOWN el monigote rueda , el problema es que si lo pulso a la vez que las flechas de izquierda o derecha, la orden se anula y no rueda.

Cre ok la solucion seria que la opcion de rodar se la aplicase cuando pulsase DOWN + IZq/Der
pero o se hacerlo

Creo que ahora si que me explique :wink:

PD:Como puedo hacer para que la animacion de andar solo se reproducca cuando pulso las lechas, que mientras tanto este en otra animacion(parado), esque aunque no avfanze se sigue reproduciendo

GRACIAS

Por korger

13 de clabLevel



 

msie
Citar            
MensajeEscrito el 30 Sep 2006 11:27 am
Para capturar dos pulsaciones, pones un condicional dentro de otro o el operador &&
if(Key.isDown(Key.DOWN)){if(Key.isDown(Key.LEFT)){}}
o
if(Key.isDown(Key.DOWN)&&Key.isDown(Key.LEFT)){}
En la línea del tiempo del muñeco pones varios estados (andar,saltar, ect) con nombres en los fotogramas. Cuando llegue al siguiente estado pones un stop o un gotoAndPlay y el nombre del estado anterior.
Y donde manejas el código que lo mueve pues lo mismo. Cuando esté rodadndo muñeco.gotoAndPlay("rodar"); cuando esté quieto, muñeco.gotoAndStop("quieto");

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 30 Sep 2006 01:41 pm
Bueno, gracias pero aora tengo otro problema, tengo este código

Código :

[b]if (Key.isDown(Key.RIGHT)) {
    with (_root.bola){
      gotoAndPlay ("correr");
      }[/b]   _root.bola._xscale = mov;
    this._x += 20;
      choque = checkHit(this, cesped);
      if (colision) {
         do {
            this._y += .5;
            choque = checkHit(this, cesped);
         } while (choque == false);
      }
   }
   if (Key.isDown(Key.LEFT)) {
      [b] with (_root.bola){
         gotoAndPlay ("correr");
      }[/b]      _root.bola._xscale = -mov;
     this._x -= 20;
      choque = checkHit(this, cesped);
      if (colision) {
         do {
            this._y += .5;
            choque = checkHit(this, cesped);
        } while (choque == false);
     }
   }
   do {
      this._y -= .5;
      choque = checkHit(this, cesped);
   } while (choque != false);
   this._y += .5;
}


[b]if(Key.isDown(Key.DOWN)){if(Key.isDown(Key.LEFT)){
   with (_root.bola){
      gotoAndPlay ("rodar");[/b]   }
   }
}


el personaje se mueve cuando pulso derecha/izquierda pero parece ser que como tiene la accion de gotoandplay if.Keyisdown) esta se ejecuta no soo una vez, sinó indefinidamente, por lo que el mc solo reproduce el 1err fotograma de la parte de correr (pues cuando la ejecuta se uelve a ejecutar.. y siempre esta en el mismo frame, que hago?
Además tampoco rueda, porque ejecuta la orden de if (Key.isDown(Key.LEFT)) { antes que la de
[b]if(Key.isDown(Key.DOWN)){if(Key.isDown(Key.LEFT)){
GRACIAS

Por korger

13 de clabLevel



 

msie
Citar            
MensajeEscrito el 30 Sep 2006 01:54 pm
Cierto, tienes que definir una variable llamada currentState.
Y en los ifs pones:

Código :

if (Key.isDown(Key.LEFT)) {
if(currentState!="correr"){
this.gotoAndPlay("correr");
currentState="correr";
}
}

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 01 Oct 2006 01:36 pm
ok gracias zah, ahora tengo otra duda, como podria hacer para que al pulsar UP hiciese un salto suave, es decir laanimacion del salto la hace bien, pero si pongo,

Código :

on (keyPress "<Space>"){
   bola._y -=8   
with (_root.bola){
       
                    rodar = "salto";
   }
}


le resta 8 a "Y" pero vuelve a su posición original, lo que quiero esque haga lo mas parecido a un salto, una curva suave
Además si le doy muchas veces seguidas a Space,este asciende muchas veces, y yo solo kiero que ascienda una vez, por cada vez que pulses el Space, y cuando toque el suelo otra etc..
como en un tipico juego de plataformas.

(en la animación hay gravedad, si pongo el mc en alto, cae hasta colisionar con el suelo) por si sirve de ayuda

GRACIAS

Por korger

13 de clabLevel



 

msie
Citar            
MensajeEscrito el 01 Oct 2006 02:22 pm
Lo primero, deberías dejar de programar en los clips.
Y en cuanto a eso que pides, más de lo mismo, ir definieno variables booleanas de control, para saber si está en el suelo o se mueve. Para el salto, lo que puedes hacer es dar una aceleración negativa, pr ej fuerza=-25 y la gravedad ya se irá encargando de ponerlo bien.

pd: espero ver tu trabajo cuando lo termines :wink:

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 01 Oct 2006 05:25 pm
Que es una vaariable booleana, esque como creo que dije en este u otro post la parte referente a la colision del codigo la pille del foro, pues aún me falta practica,
respecto a lo de progrmar fuera de los clips, a que te refieres? esque no entendido muy bien, creo que aparte de los gotoandplay no hay casi nada mas dentro de los clips,

Por ulitmo, yo tambien espereo ver acabado mi trabajo :lol: lo principal ya lo tengo casi hecho , pues es el movimiento y la colision, lo demas son cosas mas sencillas (para mi nivel que no es muy alto jeje)
espero subiro a alguna web de juegos, si lo hago, no dudes que te pondre en los agradecimientos :lol: jeje

GRACIAS

Por korger

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Oct 2006 05:47 pm
Una variable booleana es una variable de valor true o false sin más.
Y lo de programar fuera de los clips (es verdad que está mal expresado), es que es mejor escribir el código dentro de los keyframes de la línea del tiempo que en el panel de acciones de los clips de película. Y ya qe empiezas a programar mejor que aprendas a hacerlo bien desde el principio y no tengas que andar luego cambiando las maneras.
Saludos ^^

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 01 Oct 2006 06:02 pm
es decir, que en vez de meter el code dentro del panel de acciones, si lo hago en los clips que sea en la barra de tiempo no?
respecto a lo de saltar, que puedo hacer esquehe probado esto

Código :

on (keyPress "<Space>"){
   fuerza -= 90
       with (_root.bola){
      rodar = "salto";
   }
}


y va bien, pero lo que pasa, es que sube muy de golpe y despues cae bien, (con la gravedad) y yo kiero, que suba suave, y continue suave

Y como puedo hacer, para que,por ejemplo, al poner keypress, si mantengo pulsada la tecla SPACE o la pulso repetidamente, la orden se ejecuta muchas veces y el mc sube mientras la teng<as pulsada, yo solo quiero que se pueda hace esto, cuando estes en el suelo,(son para esto para lo que sirven las variables booleanas,po ej, if suelo = true) on keypresss...

GRACIAS

Por korger

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Oct 2006 01:21 am
Lo que yo haría (es más, lo he hecho ^^ ) sería usar como bien dijo Zah, es usar una variable que sea true cuando esta saltando y false cuando no lo esté (una variable booleana).

Entonces te quedaría algo como:

Código :

if (Key.isDown(Key.SPACE) && !saltando) {
saltando = true;
//
// Acá tendrías que ubicar el resto de las acciones
//
}


Y, luego, tendrías que definir como false a la variable "saltando" cuando esté en el piso (para el ejemplo, voy a suponer que el piso está en y=300) y te quedaría algo así:

Código :

if (_y <= 300 && saltando) {
saltando = false;
//
// Acá tendrías que poner todas las otras acciones y variables a definir
//
}

También puede que uses un hitTest, pero es lo mismo.

Si me das tu dirección de mail, te mando el ejemplo que yo usé (lamentablemente, te voy a dar el código y el .swf no el .fla porque me gustaría conservar el trabajo artístico que realizé :roll: )


Finalmente, poner los scripts fuera de los objetos es útil por varios motivos, más que nada, te evitás tener que buscar el código en los distintos clips. Esto lo hacés colocando todas las acciones en el primer fotograma de la película. Usando las funciones "onEnterFrame" y "MovieClip.prototype".

usa las etiquetas code para postear tu codigo

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie

 

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