Comunidad de diseño web y desarrollo en internet online

Una ayudita con la clase Tween

Citar            
MensajeEscrito el 06 Sep 2008 11:35 pm
Buen Dia.

A ver si me ayudan con esto. En este clip, al hacer roll_over la esfera crece y en roll_out vuelve a su escala inicial. Por favor pasen repetida y rápidamente el cursor sobre alguna de las esferas y verán que el comportamiento se altera. Se daña elscript por así decirlo.

Que puede ser?
Gracias porr su ayuda.





Código :

import fl.transitions.*;
import fl.transitions.easing.*;

var myTweenX:Tween;
var myTweenY:Tween;
var nodo;
var clip;
////////////
for (var i = this.numChildren; i>0; i--)
{
   clip = getChildAt(i-1);
   clip.buttonMode = true;
   clip.addEventListener (MouseEvent.ROLL_OVER, miRollOver);
   clip.addEventListener (MouseEvent.ROLL_OUT, miRollOut);
}

function miRollOver (e:MouseEvent):void
{
   nodo = e.target;
   var layers = this.numChildren;
   var top = this.getChildAt(layers-1);
   swapChildren (nodo, top);
   myTweenX = new Tween(nodo, "scaleX", Regular.easeOut, 1, 5, 0.3, true);
   myTweenY = new Tween(nodo, "scaleY", Regular.easeOut, 1, 5, 0.3, true);
}

function miRollOut (e:MouseEvent):void
{
   nodo = e.target;
   myTweenY.yoyo()
   myTweenX.yoyo();
}

Por leonfcs

10 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Sep 2008 12:48 am
El problema es que los Tweens son globales y cuando creas la función yoyo del Tween y aplicas de nuevo el Tween muy rápido la función yoyo no ha terminado y crea estos problemas, lo mejor es que hagas los Tweens locales y no utilices yoyo:

Código ActionScript :

import fl.transitions.*;
import fl.transitions.easing.*;

var nodo;
var clip;
////////////
for (var i = this.numChildren; i>0; i--) {
   clip = getChildAt(i-1);
   clip.buttonMode = true;
   clip.addEventListener(MouseEvent.ROLL_OVER, miRollOver);
   clip.addEventListener(MouseEvent.ROLL_OUT, miRollOut);
}

function miRollOver(e:MouseEvent):void {
   nodo = e.target;
   var layers = this.numChildren;
   var top = this.getChildAt(layers-1);
   swapChildren(nodo, top);
   var myTweenX:Tween = new Tween(nodo, "scaleX", Regular.easeOut, 1, 5, 0.3, true);
   var myTweenY:Tween = new Tween(nodo, "scaleY", Regular.easeOut, 1, 5, 0.3, true);
}

function miRollOut(e:MouseEvent):void {
   nodo = e.target;
   var myTweenX:Tween = new Tween(nodo, "scaleX", Regular.easeOut, nodo.scaleX, 1, 0.3, true);
   var myTweenY:Tween = new Tween(nodo, "scaleY", Regular.easeOut, nodo.scaleY, 1, 0.3, true);
}


PD:Para animar busca otras librerías de Tweens las de Adobe no son las mejores a utilizar.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

chrome
Citar            
MensajeEscrito el 07 Sep 2008 01:43 pm
Hola, Pues muchas gracias por la respuesta. Incluso de la forma como propones ma falla en ocaciones el script. Pero tambi;en investigu;e un poco acerca de otras class Tween y veo que Caurina es bien recomendada asi que voy a migrar a Caurina a ver como me va.

Gracias de nuevo.

Por leonfcs

10 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Sep 2008 02:37 pm
Aquí puedes ver un test de velocidad con las librerías más populares, la de Caurina es Tweener, pero sería bueno que observaras lo mismo en AS2 que en AS3 TweenMax y TweenLite:

Speed Test

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

chrome

 

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