Comunidad de diseño web y desarrollo en internet online

Descargar un contenedor

Citar            
MensajeEscrito el 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 ActionScript :

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";
   }
}

Por arieljbon

56 de clabLevel



 

argentina

msie8
Citar            
MensajeEscrito el 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 ActionScript :

//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

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

opera
Citar            
MensajeEscrito el 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!!!

Por arieljbon

56 de clabLevel



 

argentina

msie8
Citar            
MensajeEscrito el 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 ActionScript :

//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????

Por arieljbon

56 de clabLevel



 

argentina

msie8
Citar            
MensajeEscrito el 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

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 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

Por drack

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Oct 2011 07:43 pm
Hola buenas tardes escribo solo para aquellos que como yo le e estado dando vueltas para solucionar el problema de cerrar un swf cargado externamente lo solucione de la siguiente manera:
En mi pelicula principal tengo un boton que tambien tiene el mismo nombre boton el cual me carga una pelicula externa el codigo es el siguiente:

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

var contenedor = new Loader();

//------------------------------------

boton.addEventListener(MouseEvent.CLICK, _load);
function _load(event:MouseEvent):void
{
contenedor.load(new URLRequest("carga.swf"));
stage.addChild(contenedor);
contenedor.x = 10;
contenedor.y = 100;
}

En mi pelicula externa tengo un boton que cierra esta pelicula este boton esta instanciado como boton 2 y este es el codigo que utilice :

boton2.addEventListener(MouseEvent.MOUSE_DOWN,Terminar);

function Terminar(e:Event):void {
try {
e.currentTarget.parent.parent.unload ();
}
catch (e:Error) {
trace (e);
}
}

recordemos que todo el codigo se coloca en el primer fotograma de cada pelicula y lo solucione en Action Scrip 3.0

Por leo987wil

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Oct 2011 07:54 pm

leo987wil escribió:

Hola buenas tardes escribo solo para aquellos que como yo le e estado dando vueltas para solucionar el problema de cerrar un swf cargado externamente lo solucione de la siguiente manera:
En mi pelicula principal tengo un boton que tambien tiene el mismo nombre boton el cual me carga una pelicula externa el codigo es el siguiente:

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

var contenedor = new Loader();

//------------------------------------

boton.addEventListener(MouseEvent.CLICK, _load);
function _load(event:MouseEvent):void
{
contenedor.load(new URLRequest("carga.swf"));
stage.addChild(contenedor);
contenedor.x = 10;
contenedor.y = 100;
}

En mi pelicula externa tengo un boton que cierra esta pelicula este boton esta instanciado como boton 2 y este es el codigo que utilice :

boton2.addEventListener(MouseEvent.MOUSE_DOWN,Terminar);

function Terminar(e:Event):void {
try {
e.currentTarget.parent.parent.unload ();
}
catch (e:Error) {
trace (e);
}
}

recordemos que todo el codigo se coloca en el primer fotograma de cada pelicula y lo solucione en Action Scrip 3.0


William Leonardo Vela

Por leo987wil

1 de clabLevel



 

chrome

 

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