Comunidad de diseño web y desarrollo en internet online

Teclas presionadas.

Citar            
MensajeEscrito el 26 Oct 2004 12:06 pm
Buenas a todos.
Supongamos que tengo un mc que se mueve con las flechas del cursor.
Dos preguntas:
Si dejo pulsada una dirección (por ej la izquierda) el mc se mueve un punto y, después de una pausa de menos de un segundo, se mueve del tirón. Es como en cualquier editor de texto; si dejas apretada la tecla "A", se escribe una "A" y después del breve intervalo, se escriben muchas "A" del tirón. ¿Hay algún modo de evitarlo?
Y mi segunda pregunta es: ¿cómo se hace para que el mc vaya en diagonal apretando dos teclas a la vez (por ej derecha y arriba)?
Gracias de antemano. Un saludo.

Por Mahalo

8 de clabLevel



 

unknown
Citar            
MensajeEscrito el 26 Oct 2004 01:31 pm
a ver esto es sencillo aunque no se hasta que punto en flash, tendras que crear una variable que te controle que la tecla esta pulsada, kedaria algo asi

SI( latecla esta pulsada) {
SI(variable==false) {
accion
variable = true;
}
} SINO { variable = false }

Lo de ir en diagonal... lo hace solo, si tienes que al pulsar iskierda vaya a la izkierda y al pulsar arriba vaya hacia arriba... al pulsar ambas se tomaran como proposiciones independientes y el ordenador entendera que se pulso la tekla izkierda, y que se pulso la tecla derecha por separado

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

unknown
Citar            
MensajeEscrito el 26 Oct 2004 03:19 pm

Código :

var obj:Object = new Object();
obj.onKeyDown = function(){
    if(Key.isDown(Key.SPACE)){
        trace("Espacio esta pulsado");
    }
}
obj.onKeyUp = function(){
    if(Key.isToogle(Key.SPACE)){
        trace("Espacio esta SUELTO");
    }
}
Key.addListener(obj);

Mas sencillo de lo que parece

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 27 Oct 2004 09:55 am
Hola de nuevo.
El script funciona, pero no al cien por cien. Me explico: al soltar el botón no siempre se detiene el mc, sólo a veces. A la hora de empezar a moverlo sí que va bien siempre (o al menos aún no me ha fallado). El problema es cuando suelto el botón.
La estructura es: el código está en el primer fotograma. Y junto al trace, dentro de la sentencia if, he metido la variable mover (por ejemplo). mover=1 si está presionado y mover=0 si se suelta. Luego en la línea principal tengo el típico mc._x+=mover;
Pues eso, que no funciona siempre.
Para más información, el mensaje del trace cuando pruebo la película tampoco responde siempre bien.
Un saludo.

Por Mahalo

8 de clabLevel



 

unknown
Citar            
MensajeEscrito el 27 Oct 2004 10:54 am
Porque no pones mejor todo el código?

Así nos enteraremos más, jeje.

Saludos!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

unknown
Citar            
MensajeEscrito el 27 Oct 2004 12:34 pm
Hola.
A ver, el código es exactamente el mismo que muestra Freddie. Sólo he cambiado SPACE por RIGHT y añadido la variable mover en las sentencias "if".

var obj:Object = new Object();
obj.onKeyDown = function(){
if(Key.isDown(Key.RIGHT)){
mover=1;
trace("Espacio esta pulsado");
}
}
obj.onKeyUp = function(){
if(Key.isToogle(Key.RIGHT)){
mover=0;
trace("Espacio esta SUELTO");
}
}
Key.addListener(obj);

Luego la acción mc._x+=mover;

No hay nada más. Sólo tengo un circulito en una pantalla en blanco.

Saludos.

Por Mahalo

8 de clabLevel



 

unknown
Citar            
MensajeEscrito el 27 Oct 2004 02:21 pm
Pues mira, yo he hecho esto y funciona perfectamente, aunque creo que tengo un código por casa que funciona aún mejor que este.

Código :

var obj:Object = new Object();
obj.onKeyDown = function() {
   if (Key.isDown(Key.RIGHT)) {
      mc._x += 5;
   }
   if (Key.isDown(Key.LEFT)) {
      mc._x += -5;
   }
   if (Key.isDown(Key.UP)) {
      mc._y += -5;
   }
   if (Key.isDown(Key.DOWN)) {
      mc._y += 5;
   }
};
Key.addListener(obj);


Si lo encuentro lo posteo por aqui, porque el efecto que hace este no me convence del todo.

Un saludo!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

unknown
Citar            
MensajeEscrito el 27 Oct 2004 04:01 pm
Exacto, mucho mas efectivo moverlo en el evento onKeyDown que en un enterFrame gasta_recursos

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 27 Oct 2004 05:01 pm
Hola otra vez.
Es que así no se soluciona el problema de la pausa de la que hablo en el prime mensaje. Por eso mismo yo empleé la variable que sí me solucionaba el problema pero que no me iba del todo bien al soltar la tecla.
En fin, de todos modos estoy muy agradecido por la atención que me habéis prestado. Saludos.

Por Mahalo

8 de clabLevel



 

unknown
Citar            
MensajeEscrito el 27 Oct 2004 05:03 pm
Por cierto, que la idea de la variable es de Icem4n. Muchas gracias.

Por Mahalo

8 de clabLevel



 

unknown
Citar            
MensajeEscrito el 29 Oct 2004 06:56 am
Hola.
Para Elecash. El script que dices tener por tu casa, ¿recuerdas si soluciona el tema de la pausa?
He estado probando como un loco sin conseguirlo y me gustaría que no se olvidara el tema.
Y tengo una duda sobre niveles, pero mejor abrir un nuevo tema, ¿no?
Saludos.

Por Mahalo

8 de clabLevel



 

unknown
Citar            
MensajeEscrito el 29 Oct 2004 08:46 am
Sí, lo estuve buscando pero no lo encontre, quizá está en un CD, pero vamos, si tienes el Flash MX a secas, en los ejemplos de Macromedia venía.

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

unknown
Citar            
MensajeEscrito el 29 Oct 2004 12:11 pm
Hola.
Tengo el mx2004.
Saludos.

Por Mahalo

8 de clabLevel



 

unknown
Citar            
MensajeEscrito el 30 Oct 2004 01:53 pm
Hola de nuevo. Escribo para intentar zanjar este tema.
He resuelto el código de la siguiente manera, prescidiendo de listeners. Las acciones van en el clip de película.

Código :

onClipEvent (enterFrame) {
    if (Key.isDown(Key.UP)){
        this._y-=5;
    }
    if (Key.isDown(Key.DOWN)) {
        this._y+=5;
    }
    if (Key.isDown(Key.LEFT)) {
        this._x-=5;
    }
    if (Key.isDown(Key.RIGHT)) {
        this._x+=5;
    }
}


Y nada más. Así funciona perfectamente, se elimina el problema de la pausa y pueden pulsarse dos teclas a la vez para mover el clip en diagonal.

Saludos.

Por Mahalo

8 de clabLevel



 

unknown
Citar            
MensajeEscrito el 30 Oct 2004 08:45 pm
Ese era el problema? :shock:

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 14 Dic 2007 04:22 pm

KwanzaFreddie escribió:

Código :

var obj:Object = new Object();
obj.onKeyDown = function(){
    if(Key.isDown(Key.SPACE)){
        trace("Espacio esta pulsado");
    }
}
obj.onKeyUp = function(){
    if(Key.isToogle(Key.SPACE)){
        trace("Espacio esta SUELTO");
    }
}
Key.addListener(obj);

Mas sencillo de lo que parece


Muchasgracias amigo!!
Me ha ayudado bastante entender eso!!
Adios

Por Skizobass

26 de clabLevel



 

firefox

 

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