Comunidad de diseño web y desarrollo en internet online

[Duda] Anular Acciones.

Citar            
MensajeEscrito el 23 Sep 2009 03:10 am
Hola denuevo, he vuelto a tener un problema en Action Script 2, esta vez lo que necesito es saber como anular acciones o si hay un metodo distinto de llegar a lo que quiero lograr.

Lo que quiero lograr, es que al presion tal tecla vaya a tal fotograma, hasta hay todo bien, pero ahora quero que al no presionarla no vaya a ningun fotograma o mejor dicho, que no vaya al fotograma que le pedi en particular.
He intentado con Variables, pero no sé como explicar al código que no vaya a ese fotograma al ser false.
Mi problema en sí es que al quedarse en tal fotograma no quiere cambiar despues.
En resumen: Pido que me digan como lograr que al dejar de presionar tal tecla, no lo mande a tal fotograma (deje de ordenarle que vaya a tal).

O si alguien conoce otro metodo para lograr aquello le agradesco de antemano.

Espero sus respuestas.

Por Sub-Zero

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Sep 2009 08:26 am
Hola,
la verdad es que no entiendo del todo tu pregunta. Si lo que quieres es detectar cuando has presionado una tecla y cuando la has soltado, puedes usar esto:

Código ActionScript :

var keyListener:Object = new Object();
keyListener.onKeyDown = function():Void
{
    trace ("Tecla " + Key.getCode() + " pulsada");
}
keyListener.onKeyUp = function():Void
{
    trace ("Tecla " + Key.getCode() + " soltada");
}
Key.addListener(keyListener);

Y si lo que quieres que todo el rato se esté comprobando si has pulsado o no cierta tecla, sería algo como esto:

Código ActionScript :

this.onEnterFrame = function():Void
{
   if (Key.isDown(Key.UP))
   {
      trace("tecla arriba pulsada");
   }
   else
   {
      trace("tecla arriba no pulsada");
   }
}

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Sep 2009 06:44 pm
Perdon si no me exprese muy bien.
Respecto a tu código:

Código ActionScript :

this.onEnterFrame = function():Void 
{ 
   if (Key.isDown(Key.UP)) 
   { 
      trace("tecla arriba pulsada"); 
   } 
   else 
   { 
      trace("tecla arriba no pulsada"); 
   } 
}


Lo que necesito es que vaya a tal fotograma (en este caso se llama "normal").
Entonces sería:

Código ActionScript :

this.onEnterFrame = function():Void 
{ 
   if (Key.isDown(Key.UP)) 
   { 
      this.gotoAndStop("normal");
   } 
   else 
   { 
      ///////Código Faltante////////////
   } 
}


Donde coloque "Código Faltante" es donde quiero que le diga que no vaya a ese fotograma.

Razones por las cual no quiero que haga esa acción (la de ir a "normal"):
*Porque cuando le ordeno que vaya al fotograma "normal" despues no puedo decirle que al soltar la tecla Arriba deje de ordenarle que vaya a ese fotograma. Como resultado da que donde le ordena constantemente no me deja que vaya a otros fotogramas que le ordene posteriormente al presionar otras teclas.

Entonces, mi meta es lograr que al soltar la ]tecla arriba deje de ordenarle que vaya a "normal", en pocas palabras que ese gotoAndStop sea false.

Gracias por responder isidoro.
Seguire esperando la solución a mi duda y espero que esta vez haya quedado claro.

Por Sub-Zero

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Sep 2009 07:54 pm
Pues perdona, pero sigo sin entenderlo. Si no quieres que vaya al fotograma "normal", tienes que decirle dónde quieres ir.
Por ejemplo, si tienes una animación con 20 fotogramas clave en el stage, y quieres que al pulsar la flecha arriba vaya al fotograma 15 y se detenga, y que al soltar la tecla vuelva a reproducir desde el fotograma 1, lo mejor es usar un listener (el código va en el fotograma 1):

Código ActionScript :

var keyListener:Object = new Object();

keyListener.onKeyDown = function():Void
{
   if (Key.getCode() == 38) //tecla arriba
   {
       gotoAndStop(15);
   }
}

keyListener.onKeyUp = function():Void
{
    gotoAndPlay(1);
}
Key.addListener(keyListener);

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Sep 2009 08:34 pm
Simplemente quiero que al dejar de presionar tal tecla, no lo mande a tal fotograma.
Algo como decir que ese gotoAndStop sea "false" si se deja de presionar tal tecla.

Ya sé que siempre deve mandarlo a un frame ya que sería imposible a ninguno, pero si deve ser posible que deje de ordenarle que lo mande a tal.

Porque mi problema es que al presionar otra tecla no lo manda a tal fotograma porque el que ya mensione no deja de orndenarle que vaya a "normal".

Necesito que le diga que si al presionar Arriba le ordene que vaya a "normal" [Hasta hay todo bien] pero el problema es que no sé como decirle que deje de ordenarle si se suelta la tecla.

En resumen:

Lo que quiero hacer: Presionar la tecla Arriba y me mande a "normal"; pero si la suelto que deje de ordenarle que vaya a "normal". (Explicación del por qué en el parrafo verde)

Lo que me resulta: Presionar la tecla Arriba y me manda a "normal"; pero si la suelto me sigue ordenando que vaya a normal y no me deja que vaya a otros fotogramas con otras teclas.

Razon del porque no funciona: Porque no sé como decirle que no se haga el "gotoAndStop" si se suelta.

Gracias de todas formas.
isidoro, una pregunta
¿Que diferencias hay entre el uso de if (Key.isDown(38 )) y keyListener.onKeyUp = function():Void ?

Espero tu respuesta.

Por Sub-Zero

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Sep 2009 09:48 pm
La variable keyListener se usa para capturar eventos de teclado, de modo que si pulsamos cualquier tecla, se ejecutará la función que definamos en: keyListener.onKeyDown; y cuando dejamos de pulsar cualquier tecla, se ejecutará la que definamos en keyListener.onKeyUp. Como el listener responde a los eventos de cualquiera de las teclas que pulsemos, dentro del onKeyDown tenemos que comprobar si la tecla pulsada es arriba, o si hemos pulsado otra, y por eso hay que añadir la condición: if (Key.getCode() == 38).
Si lo que quieres es mostrar un fotograma determinado dependiendo de la tecla pulsada, usa este código (sólo se pone en el primer fotograma del movieclip):

Código ActionScript :

var keyListener:Object = new Object();

keyListener.onKeyDown = function():Void
{
   switch (Key.getCode())
   {
      case 37: gotoAndStop(2); break; //tecla izquierda, muestra el fotograma 2
      case 38: gotoAndStop(3); break; //tecla arriba, muestra el fotograma 3
      case 39: gotoAndStop(4); break; //tecla derecha, muestra el fotograma 4
      case 40: gotoAndStop(5); break; //tecla abajo, muestra el fotograma 5
   }
}

keyListener.onKeyUp = function():Void
{
   gotoAndStop(1); //Si soltamos la tecla, muestra el fotograma 1
}
Key.addListener(keyListener);

En este ejemplo tenemos 5 fotogramas, y dependiendo de la tecla pulsada mostrará uno diferente del 2 al 5, y si soltamos la tecla mostrará el 1, y al soltar la tecla no se sigue ejecutando el evento onKeyDown.
Y si todo el tiempo está mandándole a un fotograma determinado, quizá tengas un evento enterFrame que se esté ejecutando continuamente, y en ese caso tendrías que eliminarlo.

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox

 

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