Comunidad de diseño web y desarrollo en internet online

Cargar swf dentro de otro swf y ademas ir a un fotograma AS3

Citar            
MensajeEscrito el 29 Jun 2010 03:00 am
Hola amigos.

Mi problema es el siguiente: estoy programando con AS3 en Flash CS4.

Quiero cargar un SWF externo dentro de mi SWF principal. pero ademas saber cuantos fotogramas tiene en total, cual es el actual y asi sucesivamente del SWF externo.

Con AS2 era super sencillo pero con AS3 no tengo ni idea.

Es decir. SWF principal carga a SWF externo y SWF principal debe saber automaticamente cuantos fotogramas tiene en total, el actual, etc.

Gracias de antemano.

Por ritalo

7 de clabLevel



Genero:Masculino  

web development

msie8
Citar            
MensajeEscrito el 29 Jun 2010 03:13 am
no tengo idea de como es que se hace en As2..pero en As3 no es dificil solo debes acceder a la propiedad content del objeto Loader en el cual se encuentra un displayObject que es el SWF cargado en cuestion , puedes crear una variable que haga referencia a ese objeto :

Código ActionScript :

import flash.display.Loader;
import flash.display.MovieClip;
import flash.events.Event;
import flash.net.URLRequest;

var loader:Loader = new Loader();
var swfLoaded:MovieClip;

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);

function onCompleteHandler(e:Event):void
{
   //accedes al content como es un DisplayObject..hacemos un cast para indicarle que es mas que
   //un display object , un swf se comporta como un movieclip por eso hacemos cast a MovieClip
   //para poder tener acceso a sus propiedades currentFrame, totalFrames,play..etc
   swfLoaded = e.target.content as MovieClip;
   
   //lo agregas al display list
   addChild(swfLoaded);
   
   //prueba
   trace("total frames:", swfLoaded.totalFrames , "currentFrame :" , swfLoaded.currentFrame );
}

loader.load(new URLRequest("swfA.swf"));


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 29 Jun 2010 03:36 am
Gracias amigo pero no me funciona. mira como lo tengo yo.

var contenedor:MovieClip = new MovieClip(); //creo el movieclip
contenedor.x = 0; //coloco posicion
contenedor.y = 100; //coloco posicion
addChild(contenedor); //lo muestro enn pantalla
var myLoader:Loader = new Loader(); //creo la variable que cargara el archivo externo
myLoader.load(new URLRequest("playa.swf")); //cargo el archivo
contenedor.addChild(myLoader); //muuestro enn pantalla el archivo externo
var totalfoto=contenedor.totalFrames; //y esto hace que se vea el total de fotogramas
trace(totalfoto); //muestro la variable

Todo esta bien hasta que quiero ver los fotogramas del archivo externo.
Grcias espero sus comentarios.

Por ritalo

7 de clabLevel



Genero:Masculino  

web development

msie8
Citar            
MensajeEscrito el 29 Jun 2010 03:51 am
Lo hise de esta otra manera

var loaderes:Loader = new Loader(); //creo variable
loaderes.load(new URLRequest("playa.swf")); //cargo la variable con el archivo
this.mivideo.addChild(loaderes); //este clip de pelicula esta en el escenario y lo cargo con la variable loadered
trace(this.mivideo.totalFrames); //y muestro para ver si funciona

No me funciona porque playa.swf tiene 98 fotogramas y me arroja como resultado 1.

Ayudenme por favor.

Por ritalo

7 de clabLevel



Genero:Masculino  

web development

msie8
Citar            
MensajeEscrito el 29 Jun 2010 04:20 am
1. cargas el swf a la manera brusca por asi decirlo.
2. vete acostumbrando hacer las cosas con un poco de mas sentido, ya que As2 no es malo, lo hicieron jodido las personas con sus malas practicas.
3. busca informacion F1 sobre la gestion de eventos en As3 "Listeners & Handlers"
4.copy/paste "hay que saber usarlo".

pd: probe mi codigo con un swf que tiene una animacion de 80 frames y este mismo numero me arrojo el trace.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 29 Jun 2010 04:28 am
Yo uso tu codigo y me arroja esto

TypeError: Error #2007: El valor del parámetro child debe ser distinto de null.
at flash.display::DisplayObjectContainer/addChild()
at new_fla::MainTimeline/onCompleteHandler()

En que estoy fallando?????

Por ritalo

7 de clabLevel



Genero:Masculino  

web development

msie8
Citar            
MensajeEscrito el 29 Jun 2010 04:32 am
ese error salta cuando no has definido un objeto o no existe en ese momento , nombres de instancia que no existen , funciones que no has declarado ..etc. crea un nuevo fla y prueba.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 29 Jun 2010 04:47 am
te he enviado mi fla amigo

Por ritalo

7 de clabLevel



Genero:Masculino  

web development

msie8
Citar            
MensajeEscrito el 29 Jun 2010 05:04 am
Estoy esperando tu comentario amigo.

Por ritalo

7 de clabLevel



Genero:Masculino  

web development

msie8
Citar            
MensajeEscrito el 29 Jun 2010 05:06 am
no puedes mezclar as1 o as2 con As3, el swf playa esta escrito en As2 u_u, debes programar y usar swfs con la misma version de As, por eso no funcionaba el codigo.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 29 Jun 2010 05:12 am
mmmm ok ya entiendo.

Gracias amigo, estoy a la orden.

Por ritalo

7 de clabLevel



Genero:Masculino  

web development

msie8
Citar            
MensajeEscrito el 29 Jun 2010 05:15 am
de nada , solo crea otra ves el swf playa esta ves asegurate que la version de "as" se la 3.0.

Jonatha

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox

 

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