¿Quieres registrarte?

Descargar un contenedor

Citar            
MensajePublicado: 01 Ene 2010 06:06 pm
Hola gente...estoy migrando para AS3....en AS2 me resultaba mas facil de cargar un archivo SWF dentro de un contendor vacio....., veamos tengo en AS3 tres botones que cargan un swf distintos en un moviclip vacio....el cargar no tengo problema lo pude hacer ....pero no entiendo y no me sale el descargar....porque cada SWF q carga se sobrepone entre ellos lo que quiero hacer que cuando haga clik en un boton descargue los otros SWF....les pongo el codigo....y espero que me ayuden....gracias!!!

Código :

import flash.events.MouseEvent;

boton_btn.addEventListener(MouseEvent.MOUSE_UP, abrir);
btn2_btn.addEventListener(MouseEvent.MOUSE_UP, abrir1);
btn3_btn.addEventListener(MouseEvent.MOUSE_UP, abrir2);

//boton_btn.addEventListener(MouseEvent.MOUSE_UP, cerrar);


function abrir(e:Event):void {
   var contenedor:MovieClip = new MovieClip();
   var carga:Loader =    new Loader();
   carga.load(new URLRequest("carga.swf"));
   carga.contentLoaderInfo.addEventListener(Event.COMPLETE, insertMovie);
function insertMovie(evt:Event):void {
      addChild(contenedor).name="ubica";
      ubica.addChild(carga).name="carga";
      
      

   }
}


function abrir1(e:Event):void {
   var contenedor:MovieClip = new MovieClip();
   var carga1:Loader =    new Loader();
   carga1.load(new URLRequest("carga1.swf"));
   carga1.contentLoaderInfo.addEventListener(Event.COMPLETE, insertMovie);
   function insertMovie(evt:Event):void {
      addChild(contenedor).name="ubica1";
      ubica1.addChild(carga1).name="carga";

   }
}

function abrir2(e:Event):void {
   var contenedor:MovieClip = new MovieClip();
   var carga:Loader =    new Loader();
   carga.load(new URLRequest("carga2.swf"));
   carga.contentLoaderInfo.addEventListener(Event.COMPLETE, insertMovie);
   function insertMovie(evt:Event):void {
      addChild(contenedor).name="ubica";
      ubica.addChild(carga).name="carga";
   }
}

arieljbon


clabLevel: 52
argentina



msie8
      MP    
Citar            
MensajePublicado: 01 Ene 2010 10:01 pm
puedes optimizar tu codigo , por ejemplo : tengo 3 botones con nombre de instancia loadSFWA,loadSFWB,loadSFWC. ahora creo un contenedor vacio que contendra los swfs cargados por el loader, para hacer mas dinamico el codigo
los 3 botones tendran el mismo Listener , asi no tengo que hacer una funcion por cada boton, en la funcion que responde al click hare un switch para detectar que boton fue clickado, por consiguiente se modificara la url que le he de pasar al metodo load() del Loader.. ahora el codigo:

Código :

//swfCon sera el contenedor 
var swfCon:Sprite = new Sprite();
swfCon.x = swfCon.y = 80;
addChild (swfCon);

//esto ya no tiene mucha explicacion lo debes de saber
var swfRequest:URLRequest = new URLRequest();
var swfLoader:Loader = new Loader();
swfLoader.contentLoaderInfo.addEventListener (Event.COMPLETE, onComplete);
swfLoader.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESS, onProgress);

//todos ejecutaran la funcion onClickLoadSWF
loadSWFA.addEventListener (MouseEvent.CLICK, onClickLoadSWF);
loadSWFB.addEventListener (MouseEvent.CLICK, onClickLoadSWF);
loadSWFC.addEventListener (MouseEvent.CLICK, onClickLoadSWF);

function onClickLoadSWF (evt:MouseEvent):void
{
   //detectamos que boton fue clickado , para ello nos auxiliamos de la propiedad name
   switch (evt.currentTarget.name)
   {
      case "loadSWFA" :
         swfRequest.url = "assets/swfA.swf";
         break;

      case "loadSWFB" :
         swfRequest.url = "assets/swfB.swf";
         break;

      case "loadSWFC" :
         swfRequest.url = "assets/swfC.swf";
         break;
   }

   //seguido de la deteccion del boton , el request estara listo para ser pasado al metodo load()
   swfLoader.load (swfRequest);
}

//cuando se complete la carga
function onComplete (evt:Event):void
{
   //este if se ejecutara mientras el numero de hijos que contenga sea mayor de 0, 
   if(swfCon.numChildren)
   {
      //si es mayor de 0, es decir tiene algun swf , lo removeremos
      swfCon.removeChildAt (0);
   }
   //agregamos el content del loader .. que es un displayObject .. SWF
   swfCon.addChild (evt.target.content);
}

//podriamos agregar este otro evento , para obtener el porogreso de la carga, con el fin de hacer un preloader..
function onProgress (evt:ProgressEvent):void
{
   var loadedBytes:Number = Math.ceil(evt.bytesLoaded / 1024);
   var totalBytes:Number = Math.ceil(evt.bytesTotal / 1024);
   var percent:int = (evt.bytesTotal / evt.bytesLoaded) * 100;
   trace (loadedBytes + " of " + totalBytes + " KB Loaded " + percent + "% Complete");
}


eso es todo espero te sirva, saludo y feliz año nuevo.

Jonathan

jn_Flash


clabLevel: 146
Mexico City



opera
  MSN Messenger     MP    
Citar            
MensajePublicado: 02 Ene 2010 08:03 pm
:D GRACIAS!!! Jonatan.....!!! de esa forma como decis vos optimizo el codigo....es que me estoy iniciando en AS3....!!! perfecto tú codigoo te agradezco muchisimooo!!!.
Feliz 2010 !!!! gracias!!!

arieljbon


clabLevel: 52
argentina



msie8
      MP    
Citar            
MensajePublicado: 04 Ene 2010 06:56 pm

jn_Flash escribió:

puedes optimizar tu codigo , por ejemplo : tengo 3 botones con nombre de instancia loadSFWA,loadSFWB,loadSFWC. ahora creo un contenedor vacio que contendra los swfs cargados por el loader, para hacer mas dinamico el codigo
los 3 botones tendran el mismo Listener , asi no tengo que hacer una funcion por cada boton, en la funcion que responde al click hare un switch para detectar que boton fue clickado, por consiguiente se modificara la url que le he de pasar al metodo load() del Loader.. ahora el codigo:

Código :

//swfCon sera el contenedor 
var swfCon:Sprite = new Sprite();
swfCon.x = swfCon.y = 80;
addChild (swfCon);

//esto ya no tiene mucha explicacion lo debes de saber
var swfRequest:URLRequest = new URLRequest();
var swfLoader:Loader = new Loader();
swfLoader.contentLoaderInfo.addEventListener (Event.COMPLETE, onComplete);
swfLoader.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESS, onProgress);

//todos ejecutaran la funcion onClickLoadSWF
loadSWFA.addEventListener (MouseEvent.CLICK, onClickLoadSWF);
loadSWFB.addEventListener (MouseEvent.CLICK, onClickLoadSWF);
loadSWFC.addEventListener (MouseEvent.CLICK, onClickLoadSWF);

function onClickLoadSWF (evt:MouseEvent):void
{
   //detectamos que boton fue clickado , para ello nos auxiliamos de la propiedad name
   switch (evt.currentTarget.name)
   {
      case "loadSWFA" :
         swfRequest.url = "assets/swfA.swf";
         break;

      case "loadSWFB" :
         swfRequest.url = "assets/swfB.swf";
         break;

      case "loadSWFC" :
         swfRequest.url = "assets/swfC.swf";
         break;
   }

   //seguido de la deteccion del boton , el request estara listo para ser pasado al metodo load()
   swfLoader.load (swfRequest);
}

//cuando se complete la carga
function onComplete (evt:Event):void
{
   //este if se ejecutara mientras el numero de hijos que contenga sea mayor de 0, 
   if(swfCon.numChildren)
   {
      //si es mayor de 0, es decir tiene algun swf , lo removeremos
      swfCon.removeChildAt (0);
   }
   //agregamos el content del loader .. que es un displayObject .. SWF
   swfCon.addChild (evt.target.content);
}

//podriamos agregar este otro evento , para obtener el porogreso de la carga, con el fin de hacer un preloader..
function onProgress (evt:ProgressEvent):void
{
   var loadedBytes:Number = Math.ceil(evt.bytesLoaded / 1024);
   var totalBytes:Number = Math.ceil(evt.bytesTotal / 1024);
   var percent:int = (evt.bytesTotal / evt.bytesLoaded) * 100;
   trace (loadedBytes + " of " + totalBytes + " KB Loaded " + percent + "% Complete");
}


eso es todo espero te sirva, saludo y feliz año nuevo.

Jonathan



Jonathan....lo prové.....y me sale el siguiente error:
1151: Existe un conflicto con la definición swfCon del espacio de nombres internal.
var swfCon:Sprite = new Sprite();
..... qué abra pasadoo????

arieljbon


clabLevel: 52
argentina



msie8
      MP    
Citar            
MensajePublicado: 05 Ene 2010 07:03 pm
si llevaste el codigo a una clase , por ejemplo el Document Class , en tu fla fijate que no tengas algun movieClip con ese nombre de instancia, otra cosa no se me ocurre.

Jonathan

jn_Flash


clabLevel: 146
Mexico City



firefox
  MSN Messenger     MP    
Citar            
MensajePublicado: 08 Feb 2010 08:45 pm
Muy buenas, y gracias a todos por postear, resolver y compartir viestros conocimientos y desconocimientos par ael aporte de todos.

Tengo una situacion similar, en la que cargo 3 swf, ya por mi cuenta he resuelto la ayuda de Jonathan, pero quiero un poco mas y queria saber si me podiais ayudar.

La cosa que tengo hasta ahora es un menu con 3 opciones, que carga cada Seccion_swf en un contenedor_MC, al hacer click carga el correspondiente SWF.

dato:Cada SWf tiene una transicion de entrada|stop|salida

Quiero conseguir que al clickar otra opcion Mande el SwF de salida, lo elimine y después cargue el correspondiente SWF, en AS2 tenia una variable que me recogia que SWF se habia cargado y lo mandaba a salia, pero en AS3 me está costando.

Muchas gracias por anticipado

drack


clabLevel: 4



firefox
      MP    

   Página 1 de 1

Responder al tema
Respuesta Rapida


 

 

Cristalab BabyBlue + BloodBerry © 2007 Cristalab
Powered by phpBB © 2001, 2007 phpBB Group

3 6 7 8 10 11 12 14 15 17 18 28 34 38 40 42 44 45 46 47 48