Comunidad de diseño web y desarrollo en internet online

Muchos Tweens, muchas propiedades. Problema.

Citar            
MensajeEscrito el 29 Abr 2008 04:04 pm
Tengo problemas con el tween que viene con FlashCS3. Cuando sucede un evento quiero que haga varios Tweens a movieClips con diferentes propiedades cada una (opacidad, escala, rotación...). Sí funciona, sólo que a veces simplemente se vuelve loco y da resultados inesperados. ¿Les ha pasado? ¿Soluciones?

Ejemplo:
import fl.transitions.*;
import fl.transitions.easing.*;
import flash.events.*;
boton.addEventListener(MouseEvent.ROLL_OVER, rollOverInicio);
function rollOverInicio(event:MouseEvent):void {
new Tween(movieClip, \"x\", Strong.easeInOut, movieClip.x, 19.9, 1, true);
new Tween(movieClip, \"y\", Strong.easeInOut, movieClip.y, 19.9, 1, true);
new Tween(movieClip, \"alpha\", Strong.easeInOut, movieClip.alpha, 19.9, 1, true);
new Tween(movieClip, \"rotation\", Strong.easeInOut, movieClip.rotation, -8.4, 1, true);
new Tween(movieClip, \"scaleX\", Strong.easeInOut, movieClip.scaleX, .4, 1, true);
new Tween(movieClip, \"scaleY\", Strong.easeInOut, movieClip.scaleY, .4, 1, true);
}

NOTA: No sé por qué pone diagonales invertidas en las comillas, ignórenlas. No están en mi código.
¡Gracias!

Por vuh

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Abr 2008 04:43 pm
Las comillas invertidas se agregan para evitar código de XSS en los POST, una medida de seguridad.
Tendrías que especificar el "a veces", es decir el primer paso para la solución es determinar que condiciones generan el error

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Abr 2008 05:40 pm
he notado que se genera el error cuando el mouse entra y sale muy rápido del botón.

Por vuh

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Abr 2008 06:12 pm
Entonces quiere decir que estás disparando los Tweens muchas veces. si solo necesitas que se ejecute una vez, agrega después del último Tween:

boton.removeEventListener(MouseEvent.ROLL_OVER, rollOverInicio);

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Jul 2009 01:18 pm
Hola,

Ya hace muchos tiempo desde que se escribió este post pero me sucede lo mismo a mi. Tengo una función resize que se llama desde dos funciones distantes temporalmente, es decir, como si sólo se llamara una vez. La función es esta:

Código ActionScript :

private function resize(newWidth:Number, newHeight:Number,finish:Boolean):void
      {
         var resizeTween1:Tween = new Tween(mediaMsk,"height",Elastic.easeOut,mediaMsk.height,newHeight,1.5,true);
         var resizeTween2:Tween = new Tween(mark,"width",Elastic.easeOut,mediaMsk.width,newWidth,1.5,true);
         var resizeTween3:Tween = new Tween(mark,"height",Elastic.easeOut,mediaMsk.height,newHeight,1.5,true);
         var resizeTween4:Tween = new Tween(dropShadowBasis,"width",Elastic.easeOut,mediaMsk.width,newWidth,1.5,true);
         var resizeTween5:Tween = new Tween(dropShadowBasis,"height",Elastic.easeOut,mediaMsk.height,newHeight,1.5,true);
         var resizeTween6:Tween = new Tween(bg,"width",Elastic.easeOut,mediaMsk.width,newWidth,1.5,true);
         var resizeTween7:Tween = new Tween(bg,"height",Elastic.easeOut,mediaMsk.height,newHeight,1.5,true);
         var resizeTween8:Tween = new Tween(markMsk,"width",Elastic.easeOut,mediaMsk.width,newWidth-60,1.5,true);
         var resizeTween9:Tween = new Tween(markMsk,"height",Elastic.easeOut,mediaMsk.height,newHeight-60,1.5,true);
         var resizeTween0:Tween = new Tween(mediaMsk,"width",Elastic.easeOut,mediaMsk.width,newWidth,1.5,true);
         
         
         /****** El resultado tiene que acabar siendo
         mediaMsk.width = newWidth;
         mediaMsk.height = newHeight;
         mark.width = newWidth;
         mark.height = newHeight;
         dropShadowBasis.width = newWidth;
         dropShadowBasis.height = newHeight;
         bg.width = newWidth;
         bg.height = newHeight;
         markMsk.width = newWidth-60;
         markMsk.height = newHeight-60;*/
            
         if(finish)
         {
            resizeTween0.addEventListener(TweenEvent.MOTION_FINISH,done);
            //done(null);
         }else{
            resizeTween0.addEventListener(TweenEvent.MOTION_FINISH,startLoading);
            //startLoading(null);
         }
      }
      


Suceden dos cosas: en el Flash Player haciendo Ctrl+Enter, se ejecuta mal, es decir llega a valores que no corresponde y a menudo deja de funcionar cuando no debe. En Firefox y usando el plugin de Flash para Firefox (la misma versión, en teoría) se ejecuta correctamente pero el TweenEvent.MOTION_FINISH no es exacto para todos los Tween (aunque duren lo mismo) y tampoco funciona como debería.

Qué pasa con los Tween en AS3??

Alguien sabe cómo crear muchos Tween a la vez? También me solucionaría el problema saber cómo encadenar tres o cuatro Tween, uno detrás de otro; así que si sabéis como hacerlo fantástico.

Gracias por todo!

Por lîtus

8 de clabLevel



 

--> x <--

firefox
Citar            
MensajeEscrito el 21 Jul 2009 01:28 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Jul 2009 06:29 am
Yo lo que suelo hacer es usar un ÚNICO Tween. Ya que sabemos que los Tweens ocupan mucha memoria ¿por qué crear 100 Tweens cuando lo puedo hacer con uno solo?

Código ActionScript :

//creo un objeto de control
var control:Object={t:0};
//realizo un único tween sobre "t" de 0 a 1
var myTween:Tween = new Tween(control, "t", Elastic.easeOut, 0, 1, 1.5, true);
myTween.addEventListener(TweenEvent.MOTION_CHANGE,cambiarValores)
function cambiarValores(e:TweenEvent){
    //en la función cambiarValores, cambiaremos las
    //propiedades de los MCs según el valor de "control.t"
   unmc.width=100+300*control.t  //(el ancho irá de 100 a 400)
   unmc.height=10+200*control.t //(el alto irá de 10 a 210)
   unmc.alpha=1-t   //(el alpha irá de 1 a 0)
   ....
}


en cuanto a "encadenar Tweens" debemos añadir el evento MOTION_FINISH.

Por Eliseo2

710 de clabLevel



 

firefox

 

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