Comunidad de diseño web y desarrollo en internet online

Problema con clase Tween y SWF externos en AS3

Citar            
MensajeEscrito el 30 Nov 2009 08:51 pm
Tengo 4 animaciones que corresponden a 4 películas SWF, en cada una hice animaciones con la clase Tween en AS3. Al ver las películas por separado se ven OK, todas las animaciones funcionan.

Después quise unir esas animaciones, entonces hice otra película que carga los 4 swf externos. Esto lo hice con "addChild". Las 4 películas se cargan en el swf principal, sin embargo las animaciones no me funcionan, todo lo hecho con la clase Tween permanece sin movimiento.

¿Cuál es la manera correcta de hacer esto para que funcione?.

Por favor, necesito ayuda, soy un principiante en Flash. Gracias.

Por Cuatr0

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Dic 2009 03:07 am
Estaria mejor si pones el codigo que estas usando asi seria mas facil ayudar, te pongo un ejerciso para que te des un idea de cuando , como se aplica los efectos de Tween. Supongamos que cargo un un swf al hacer click en un boton simple, y algo tambien importante tener siempre un contenedor donde agregar los swfs cargados, el code seria:

Código ActionScript :

//importamos las clases
import fl.transitions.Tween;
import fl.transitions.easing.*;

//creamos un contenedor vacio para los SWF
var con:Sprite = new Sprite();
addChild(con);

//declaramos las variables "objetos" pero no instanciamos asi podemos reutilizarlos
var ldr:Loader;
var tw:Tween;

//handler click
function clickHandler(evtObj:MouseEvent):void 
{
   //ahora instanciamos el objeto Loader , listener etc ..
   ldr = new Loader();
   ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
   ldr.load(new URLRequest("swfA.swf"));
}

//handler complete
function completeHandler(evtObj:Event):void
{
   //hacemos una prueba para saber si ya esta cargado el SWF
   trace(evtObj.type);
   //agregamos el swf al contenedor
   con.addChild(evtObj.target.content);
   //instanciamos el Tween y aplicas el Efecto
   tw = new Tween(evtObj.target.content, "alpha", None.easeInOut, 0, 1, 2);
}

//listener del boton
bLoadSWF.addEventListener(MouseEvent.CLICK, clickHandler);


algo tambien importante mencionar es que si vas a usar muchos Tweens , agregues listeners de cuando se completo la animacion , esto para que no se cuelguen las animaciones y o usa librerias open source como Tweener, Tween Lite etc.


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 02 Dic 2009 05:36 pm
buen dia,

jn_flash, para q ahi q agregar un evento de cuando termine la animación del Tween? para removerlo?

Por wcordero8

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Dic 2009 05:48 pm
jn_Flash:
Gracias por responder, ya solucioné mi problema, creo que tenía algo de AS2 en la película que cargaba. La verdad pase toda la tarde mirando el código y no daba con la solución. De hecho pensé que la clase Tween no funcionaba cuando se cargaba externamente. Con tu respuesta igual me sirvió porque me aclaró que si debe funcionar.

Por Cuatr0

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Dic 2009 05:49 pm
no tanto para removerlo , si no para saber cuando la animacion ha finalizado y asi ya sea que dispares otra animacion o bien ejecutar alguna otra accion.Cabe mencionar que es clase ofrece el transition manager , para tener control de los Tweens.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 02 Dic 2009 07:07 pm
ahhh ok gracias jn_flash.

ven te comento un error que me sucede aveces con los tween y depronto me puedas ayudar.

Estoy haciendo un juego de ir armando un muñeco (colocarle ojos, nariz, etc), al momento de seleccionar un tipo de boca, se activa un tween que hace el movimiento hacia la posición correcta, pero aveces este movimiento no llega hasta donde se debe, se queda en la mitad, y no entiendo porque pasa, ya que otras veces si funciona bien

Código ActionScript :

      var auxBocax:Number = -1;
      var auxBocay:Number = -1;
      var auxBocan:String = "";

      function colocarPartesBoca(e:MouseEvent):void
      {               
         var esteMc:MovieClip = MovieClip(partesBoca.getChildByName(e.target.name));
         if(auxBocan != "")
         {
            var auxBocaMc:MovieClip =  MovieClip(partesBoca.getChildByName(auxBocan));
            var tweenfiguras2:Tween = new Tween(auxBocaMc, "x", None.easeOut, auxBocaMc.x, auxBocax,2, true);            
            var tweenfiguras3:Tween = new Tween(auxBocaMc, "y", None.easeOut, auxBocaMc.y, auxBocay,2, true);                           
         }
            auxBocax = esteMc.x
            auxBocay = esteMc.y         
         var tweenfiguras4:Tween = new Tween(esteMc, "x", None.easeOut, e.target.x, guiaBoca.x-partesBoca.x,2, true);
         var tweenfiguras5:Tween = new Tween(esteMc, "y", None.easeOut, e.target.y, guiaBoca.y-partesBoca.y,2, true);      
            auxBocan = esteMc.name;
      }




De pronto me digas que estoy haciendo mal

gracias por tu ayuda

Por wcordero8

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Dic 2009 10:36 pm
Intenta declarar las variables fuera de la funcion y en la funcion ya instancias .

Código ActionScript :

var tw1:Tween;
var tw2:Tween;
//...
function clickHandler(evtObj:MouseEvent):void
{
   tw1 = new Tween(object,
               property,
               easingFunction,
               begin,
               finish,
               duartion,
               useSeconds);
   //tw2 = new Tween(...
}


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 03 Dic 2009 02:14 pm
ok, gracias por la ayuda jn_flash, cuando la pruebe te comento

un abarzo

Por wcordero8

8 de clabLevel



 

chrome

 

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