Comunidad de diseño web y desarrollo en internet online

Accion al terminar una accion

Citar            
MensajeEscrito el 22 Abr 2009 02:44 pm
Gente como va! Mi consulta es la siguiente: Tengo un mc el cual muevo por medio de AS2, ademas cuando empieza el movimiento tambien se genera un blur (solo en el eje y para darle sensacion de velocidad); Lo que estoy necesitando es saber como hacer para que al llegar el mc al final de su trayectoria, el blur desaparezca.
Bueno, espero puedan darme una mano.
les dejo el AS del mc y de la linea de tiempo:
Saludos

codigo del mc

Código :

onClipEvent (enterFrame) {
   if (Hdown == 0) {
      finalH = 0.5;
      currentH = getProperty("", _y);
      diffH = (finalH+currentH)/3;  // TO INCRESE SPEED OF SCREEN DECREASE NUMBER AND VICE VERSA
      setProperty ("", _y, (currentH-diffH));
                        
   } else if (Hdown == 1) {
      finalH = 163.8;
      currentH = getProperty("", _y);
      diffH = (finalH-currentH)/15;  // TO INCRESE SPEED OF SCREEN DECREASE NUMBER AND VICE VERSA
      setProperty ("", _y, (currentH+diffH));   
   }
}


y este es el codigo de la linea de tiempo:

Código :

import flash.filters.*;
var blurX:Number = 16;
var blurY:Number = 16;
var calidad:Number = 3;

btn.onPress = function() {
   var u = new BlurFilter(0, 15, calidad);
   var array11:Array = new Array();
   array11.push(u);
   textmusic2.filters = array11;

   textmusic2.Hdown = 1;
};

Por Markius

18 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 22 Abr 2009 03:12 pm
No estoy muy seguro (puesto que no he usado nunca los filtros desde AS), pero me imagino que si en la parte de código correspondiente a la parada del mc, le pones los filters en null, debería funcionarte.

Creo que deberías meterlo así:

Código :

onClipEvent (enterFrame) {
   if (Hdown == 0) {
      finalH = 0.5;
      currentH = getProperty("", _y);
      diffH = (finalH+currentH)/3;  // TO INCRESE SPEED OF SCREEN DECREASE NUMBER AND VICE VERSA
      setProperty ("", _y, (currentH-diffH));
      this.filters = null;                  
   } else if (Hdown == 1) {
      finalH = 163.8;
      currentH = getProperty("", _y);
      diffH = (finalH-currentH)/15;  // TO INCRESE SPEED OF SCREEN DECREASE NUMBER AND VICE VERSA
      setProperty ("", _y, (currentH+diffH));   
   }
}


Ya me contarás si es así

Un saludo

Por CidDeMizar

81 de clabLevel



 

msie7
Citar            
MensajeEscrito el 22 Abr 2009 04:35 pm
CidDeMizar gracias por contestar tan rapido!
Bueno mira, puse los filtros en null como me dijiste y directamente no se forma el efecto (blur).
Lo que estoy buscando lograr, es la forma de controlar que la accion ya se realizó (o sea, cuando finalH llegó al numero final) para poder realizar la siguiente (desactivar el filtro). Lei por ahi buscando que habia algo llamado onMotionFinished (que por el nombre nomas andaria perfecto) pero es para clase Tween, asi que ya lo descarté.
Bueno, si se te ocurre algo mas, yo sigo por aca buscandole la vuelta!
Saludos

Por Markius

18 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Abr 2009 06:13 am
No sé exactamente como funciona tu película, pero, suponiendo que al pulsar un botón el mc comience a moverse y al soltarlo, se pare, probaría algo así:

Al pulsar, haría como tienes en tu código

Código :

textmusic2.filters = array11;


y al soltar, que me imagino que es cuando se parará el mc, probaría esto (perdón que no te lo ponga en código porque, como te comenté antes, no he usado nunca los filtros desde AS y no conozco sus parámetros):

Metería los parámetros del filter en un array como habías hecho tú, pero pondría sus valores a 0 o al mínimo valor que acepten, por ejemplo, el blurX a 0, el blurY a 0 y la calidad a 0.
Después, al igual que has hecho antes, metería esos valores en el "array11" y se lo volvería a aplicar al mc con el comando "textmusic2.filters = array11".

Mira a ver si esta idea te funciona.

Un saludo.

Por CidDeMizar

81 de clabLevel



 

msie7
Citar            
MensajeEscrito el 23 Abr 2009 02:30 pm
CidDeMizar: De nuevo muchas gracias por la ayuda.
Estuve probando cosas similares a las que me planteas, pero el tema siempre es el mismo: realizar una accion justo al terminar otra. Creo que eso se hace con el Ciclo for-next (aunque lo conozco solo en la teoria, y desconozco como hacerlo andar, y mucho mas con mi ejemplo).
En fin, igualmente recien acabo de encontrarle una solución "de mentira" pero por ahora me sirve para no seguir varado en un problema menor dentro del sitio que estoy armando. Lo que hice fue agregarle un timer al boton para que al terminar realice la acción de terminar el efecto del filtro.
Acá te paso el código del botón que usé, por ahi a alguien lo saca de apuros en algun momento:

Código :

btn.onPress = function() {
   var u = new BlurFilter(0, 15, calidad);
   var array11:Array = new Array();
   array11.push(u);
   textmusic2.filters = array11;
   textmusic2.Hdown = 2;
   var segundos=0.4;
var hilo=setInterval(function (){ play(); textmusic2.filters = null; clearInterval(hilo); },segundos*1000);
}

Otra cosa, como verás me terminó sirviendo lo de filters = null, intente colocar los datos para dejar el filtro en 0 (o para hacer otro por ej) en una funcion pero no pude hacer que ande.
En fin, Gracias de nuevo
Saludos

Por Markius

18 de clabLevel



Genero:Masculino  

firefox

 

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