Comunidad de diseño web y desarrollo en internet online

Cargando .SWF externamente

Citar            
MensajeEscrito el 13 Abr 2009 06:05 pm
Bueno la cosa es asi...

tengo un .swf madre que carga .swf externo... pero al cargar otro .swf en un child... el otro no se ve.. pero sigue corriendo...

El code es asi:

Código ActionScript :

var cargador:Loader = new Loader(); 
cargador.contentLoaderInfo.addEventListener(Event.OPEN, Abrir); 
cargador.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, Progreso); 
cargador.contentLoaderInfo.addEventListener(Event.COMPLETE, Completo); 
addChildAt(cargador, 1); 
cargador.load(new URLRequest("inicio.swf")); 
//\\Function que cargan el .swf//\\
function cargar(cual:String){
    cargador.load(new URLRequest("inicio.swf")); 
}
function cargar4(cual:String){  
    cargador.load(new URLRequest("equipo.swf")); 
}

///////////////////////////////////////////////////
function Abrir (evt:Event):void 
{ 
   preloader.visible = true;

   
}

function Progreso (evt:ProgressEvent):void 
{ 
   var porcentaje:Number = Math.round((evt.bytesLoaded * 100)/evt.bytesTotal); 
   preloader.porcentaje.text = porcentaje + "%";  
   preloader.visible=true; 
    
   
} 
 
function Completo (evt:Event):void{ 
   preloader.visible=false; 
   
}

//Botones

TopMenu.Inicio.addEventListener(MouseEvent.CLICK, cargar);
TopMenu.Equipo.addEventListener(MouseEvent.CLICK, cargar4);

///////////////////////////////////////////////////////


Gracias

Por Stranyer

38 de clabLevel



 

unknown
Citar            
MensajeEscrito el 13 Abr 2009 07:22 pm
No entiendo el problema ... ¿no carga? ¿Carga al inicio pero no al darle a los botones?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Abr 2009 03:25 pm

solisarg escribió:

No entiendo el problema ... ¿no carga? ¿Carga al inicio pero no al darle a los botones?

Jorge


jeje, sorry... :lol:

El problema es que por ejemplo entro a un menu, me carga el .swf (que este a su vez tiene un video) y cuando entro a otro menu... el anterior desaparece y carga el nuevo. Pero el audio del video del .swf que cargue al principio se escucha.

El problema.. es que parece que sigue corriendo en segunda instancia. No hay manera de que al entrar a otro menu.. me borre por completo el .swf cargado? O algo por el estilo?

Gracias.

Por Stranyer

38 de clabLevel



 

unknown
Citar            
MensajeEscrito el 14 Abr 2009 03:29 pm
Puedes parar todos los sonidos de tu peli con

Código ActionScript :

import flash.media.SoundMixer;  
SoundMixer.stopAll()


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Abr 2009 03:58 pm

solisarg escribió:

Puedes parar todos los sonidos de tu peli con

Código ActionScript :

import flash.media.SoundMixer;  
SoundMixer.stopAll()


Jorge

El problema es que tengo un reproductor.. que tambien me lo pausa.

Yo lo que quiero detener es lo de solo un .swf, no lo puede decir que me pause el sonido de x .swf?

Gracias

Por Stranyer

38 de clabLevel



 

unknown
Citar            
MensajeEscrito el 14 Abr 2009 04:22 pm
Intenta con un .unload(); antes de cargar la segunda película, más o menos así

Código :

//cargas la primer película
loader.load(new URLRequest("primera.swf"));

//después, cuando ya no la necesites, quitarla con unload
loader.unload();

//cargar el segundo archivo
loader.load(new URLRequest("segunda.swf"));

Por -YO-

27 de clabLevel



 

México

firefox
Citar            
MensajeEscrito el 14 Abr 2009 04:27 pm
... sino deberás ir al swf en cuestión y buscar un método adecuado (o agregarlo) para poder llamarlo al descargar

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Abr 2009 04:35 pm

-YO- escribió:

Intenta con un .unload(); antes de cargar la segunda película, más o menos así

Código :

//cargas la primer película
loader.load(new URLRequest("primera.swf"));

//después, cuando ya no la necesites, quitarla con unload
loader.unload();

//cargar el segundo archivo
loader.load(new URLRequest("segunda.swf"));



Se sigue escuchando :s

Por Stranyer

38 de clabLevel



 

unknown
Citar            
MensajeEscrito el 14 Abr 2009 05:24 pm
Mmm

con removeChild(cargador);??

y luego lo vuelves a agregar con addChild, y cargas la siguiente película

Por -YO-

27 de clabLevel



 

México

firefox
Citar            
MensajeEscrito el 14 Abr 2009 07:48 pm

-YO- escribió:

Mmm

con removeChild(cargador);??

y luego lo vuelves a agregar con addChild, y cargas la siguiente película


tampoco funciona :cry:

Por Stranyer

38 de clabLevel



 

unknown
Citar            
MensajeEscrito el 15 Abr 2009 01:44 pm
Disculpen el repost...

Imaginemoslo de otra manera... tengo un .swf que carga un video externamente.. como hago para que lo deje de reproducir o cargar.. si hago un click en cualquier zona de la pantalla... o voy a otro menu..?

Recordando, que funciona asi

SWF MADRE -- SWF HIJO --> VIDEO .FLV

Lo idea, seria hacer una funcion, o evento que cuando pase algo en el .SWF.. el SWF HIJO se deje de reproducir mientras este activo.

Me explico?

Gracias, y de nuevo, disculpen el repost...

Por Stranyer

38 de clabLevel



 

unknown
Citar            
MensajeEscrito el 15 Abr 2009 01:52 pm
El swf cargado es el que detiene la carga, para lo cual debe definir un método que es llamado desde el principal

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Abr 2009 02:09 pm

solisarg escribió:

El swf cargado es el que detiene la carga, para lo cual debe definir un método que es llamado desde el principal

Jorge


Si.. me imagine que seria algo asi..

Podrias ejemplificar, por favor?

Gracias!!!! :wink:

Por Stranyer

38 de clabLevel



 

unknown
Citar            
MensajeEscrito el 15 Abr 2009 02:13 pm
Sip el swf fue cargado en un MC con nombre de instancia player, y player tiene un método público parar, haría

var player:MovieClip = this.getChildByName("player")
player.parar()

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Abr 2009 05:09 pm
hola hola, yo tengo e mismo problema y espero esto me ayude, solo que no entiendo donde va ese útimo código.

GRACIAS

Por nativitas

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Abr 2009 03:00 pm
jeje.. al final lo solucione de otra manera mucho mas sencilla.
Solo meti todo en un MovieClip, y cuando realizas un Roll_Over, se detiene el video... por lo menos funciona..

Ahora tengo un problemita bastante raro..., cuando lo levanto por navegador.. me salta este error:

Código :

Error #2044: IOErrorEvent no controlado: text=Error #2032: Error de secuencia.
   at index_fla::S_5/frame1()


Alguien sabe a que se debe?
El code, lo deje arriba del todo :D

Por Stranyer

38 de clabLevel



 

unknown
Citar            
MensajeEscrito el 18 Abr 2009 03:03 pm
Eso es cuando no encuentra algo (usualmente un archivo externo) que tiene que cargar

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 May 2009 11:20 am
y como seria eso mismo pero en as2??

Por rdoarchivos

42 de clabLevel



 

medellin colombia

msie8
Citar            
MensajeEscrito el 04 Ago 2009 09:06 am
He tenido problemas con el audio de swf's cargados mediante el objeto Loader. Este es un problema planteado en muchos foros sobre AS3. La cuestion es que aunque utilices unload y removeChild parece ser que, de alguna manera, el clip sigue corriendo (aunque no se ve) y por lo tanto las llamadas a reproducir audio que pueda haber en su linea de tiempo se siguen ejecutando. Logré solucionarlo en mi caso mediante lo siguiente:

Código :

var contenedor = new Loader();
contenedor.load(new URLRequest(mdm.Application.path+"swf/intro.swf"));
addChild(contenedor);

y en un frame posterior:

Código :

contenedor.contentLoaderInfo.content.stop();//Parar el clip para que no se quede el audio sonando
removeChild(contenedor);
contenedor.unload();
delete Loader(contenedor);
De esta forma, antes de descargar el clip, hago que se detenga y cesa el sonido. además asi la descarga se realiza satisfactoriamente. Como veis la referencia al clip tiene que hacerse a traves del objeto contentLoaderInfo que sirve para compartir informacion entre el loader y el clip contenido.
No estoy seguro, pero creo que tiene algo que ver con el garbage collector, que no elimina el clip, o parte de el, si está aún en funcionamiento (esto no lo tengo muy claro).

Por Almost_Chinese

15 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 04 Ago 2009 09:17 am
Se me olvidó quitar parte del codigo en el post anterior que es parte de un componente de MDM Zinc:

Código :

mdm.Application.path

O sea que esa linea iria normalmente así:

Código :

contenedor.load(new URLRequest("swf/intro.swf"));

Por Almost_Chinese

15 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 01 Dic 2009 12:59 pm
Hola ami me salia el mismo error y era porque sencillamente habia modificado una ruta del contenedor hijo intenta mirar que tienes cargando en el hijo para que puedas saber especificamente donde esta el error, yo estaba cargando otro sonido desde el hijo por eso me salia el error, si en caso tal no te sirve tambien puedes intentar con el

parent.removeChild(contenedor);

espero te sirva

Por Smalbach

0 de clabLevel



Genero:Masculino  

msie8
Citar            
MensajeEscrito el 16 Jul 2010 03:24 pm
Hola!!

ya se q hace mucho que se escribió este post, pero tengo un problema exactamente igual. he probado con el código de almost chinesse y me da error en esta línea:

Código ActionScript :

contenedor.contentLoaderInfo.content.stop();
, me dice "llamada a un método stop posiblemente no definido..."

q debo hacer??

si tenéis otro métodp para solucionar el problema, os agradecería q me lo explicárais...

un beso y felices vacaciones!

Por natig

76 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Jul 2010 05:58 pm
Si lo que has cargado en el loader es un swf, la linea

Código :

contenedor.contentLoaderInfo.content.stop();
hará referencia a ese movieclip, que por lo tanto si tiene definido el metodo. Pero necesitamos más codigo para saber que pasa.

Por Almost_Chinese

15 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 17 Jul 2010 10:56 am
Hola!!

Mira, tengo en mi peli dos botones, al pulsar cada uno carga un swf externo con su video flv correspondiente. este es el codigo:

Código ActionScript :

video1.addEventListener(MouseEvent.CLICK,Click);
video2.addEventListener(MouseEvent.CLICK,Click2);

var contenedor1:Loader=new Loader();     
contenedor1.x = 0; 
contenedor1.y = 0; 

var contenedor2:Loader=new Loader();     
contenedor2.x = 0; 
contenedor2.y = 0; 

function Click(e:MouseEvent){
   contenedor2.contentLoaderInfo.content.stop();
   removeChild(contenedor2);
   contenedor2.unload();
   delete Loader(contenedor2);
   contenedor1.load(new URLRequest("videosjc.swf"));   
   contenedor1.contentLoaderInfo.addEventListener(Event.COMPLETE, insertMovie);
   function insertMovie(evt:Event):void{ 
      addChild(contenedor1);
      }
   }

function Click2(e:MouseEvent){
   contenedor1.contentLoaderInfo.content.stop();//Parar el clip para que no se quede el audio sonando
   removeChild(contenedor1);
   contenedor1.unload();
   delete Loader(contenedor1);
   contenedor2.load(new URLRequest("videos2.swf"));   
   contenedor2.contentLoaderInfo.addEventListener(Event.COMPLETE, insertMovie);
   function insertMovie(evt:Event):void{ 
      addChild(contenedor2);
      }
   }



Muchas gracias!

Por natig

76 de clabLevel



 

msie7
Citar            
MensajeEscrito el 17 Jul 2010 07:05 pm
Un unload() no basta para detener el sonido unloadandStop() a veces sirve otras no , siempre digo que un swf que será cargado se debe programar un poco distinto, te cuento hay eventos ADDED_TO_STAGE y REMOVED_FROM_STAGE , estos eventos se disparar cuando el swf en cuestión es totalmente cardado y agregado al SWF o Stage que lo cargo , por lo tanto este swf hijo puede acceder a ese Stage y viceversa. El método removed se dispara cuando hagas un removeChild del swf hijo teniendo eso en cuenta si escuchas este ultimo evento crea un pequeño método destroy() en el cual cierres conexiones de video , pausar objeto Sound o mejor aun igualar a null tus objetos , para que no estén comiendo memoria y tengas un app optimizada.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 18 Jul 2010 01:53 am
Hola!!

te agradezco mucho la respuesta, pero mis conocimientos son bastantes escasos, y si te digo la verdad, no me he enterado de nada...

Por natig

76 de clabLevel



 

msie7
Citar            
MensajeEscrito el 18 Jul 2010 04:31 pm
La verdad que no es difícil, solo es cuestión de estar presionando F1 por momentos.. en fin, viendo tu código lo he visto algo confuso así que me di un tiempo y lo he ordenado, ten en cuenta que lo hice en notepad++ y que no está probado y que tal vez tenga algún error en la sintaxis o se me escape alguna letra de más ok.

SWF Principal o Main :

Código ActionScript :

video1.addEventListener(MouseEvent.CLICK,clickHandler); 
video2.addEventListener(MouseEvent.CLICK,clickHandler); 
 
var peticion:URLRequest = new URLRequest();//object URLRequest "Peticion" 
var cargador:Loader=new Loader();//object Loader "Cargador"
//Listener , cuando el SWF este completamente cargado, se llamara la funcion insertMovie
cargador.contentLoaderInfo.addEventListener(Event.COMPLETE, insertMovie, false, 0, true);      

//creamos un contenedor vacio,  donde se alojaran los SWF que se carguen
var contenedor:MovieClip = new MovieClip();
//lo agregamos a la display list
addChild(contenedor);


function clickHandler(e:MouseEvent)
{ 
   //para ser mas dinamicos y optimizar usaremos una sola funcion para el manejador CLICK
   //comprobamos que boton fue clickado
   switch(e.currentTarget.name)
   {
      //si es video1
      case "video1":
      //cambiamos la propiedad url del objeto URLRequest
      peticion.url = "videosjc.swf";
      break;
      
      //si es video2
      case "video2":
      //cambiamos la propiedad url del objeto URLRequest
      peticion.url = "videos2.swf";
      break;
      
      default:
      break;
   }
   //teniendo la url definida procede a cargar lo que esta tenga solicitado
   cargador.load(peticion);
} 
 
function insertMovie(e:Event):void
{
   //accedes atravez de e.target al LoaderInfo, se realiza un cast para evitar problemas de compilacion
   var tmpLdrInfo:LoaderInfo = e.target as LoaderInfo;
   //accedes a la propiedad content del LoaderInfo, en el cual se encuentra un DisplayObject
   //que es el SWF cargado , hacemos una conversion de cast a MovieClip ,ya que un SWF 
   //se comporta como un MovieClip 
   var swfCargado:MovieClip = tmpLdrInfo.content as MovieClip;
   
   //comprobamos si el contenedor tiene algun hijo en su display list
   if(contenedor.numChildren > 0 )
   {
      //en caso de tenerlo removeremos
      //en esta parte es cuando el Evento REMOVED_FRMOM_STAGE es disparado
      //por lo tanto la funcion que tengas definida en el SWF externo se llamara
      contenedor.removeChildAt(0);
      //descargamos el cargador
      cargador.unLoad();
      return;
   }
   
   //agregamos el SWF al contenedor , ya sea que hayga removido o no en el if anterior
   contenedor.addChild(swfCargado);
}


Ahora lo que hace falta es que agregues el listener a los swf que cargas para que estos mismos destruyan sus objetos y detengan el audio , por ejemplo en el swf videosjc :

Código ActionScript :

this.addEventListener(Event.REMOVED_FROM_STAGE,onRemoved, false, 0, true);

function onRemoved(e:Event):void
{
   //si usas el componente FLVPlayback , y tambien teniendo en cuenta que este tenga un nombre de
   //instancia por ejemplo "miReproductor"
   
   //le ponemos stop()
   miReproductor.stop();
   
   //lo igualamos a null para que se valla al carajo por completo
   miReproductor = null;
   
   
   //-------------------
   //si usas un reproductor personalizado , deberas cerrar las conexiones , quitar listeners ..etc
}


El código esta comentado así que no creo que te pierdas y si los lees te aseguro que podrás seguir a delante con tu proyecto.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 18 Jul 2010 10:03 pm
Ya esta solucionado!!

gracias!!

Por natig

76 de clabLevel



 

msie7

 

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