Foros del Web » Creando para Internet » Flash y Actionscript »

addChild de un swf que contienen un addChild

Estas en el tema de addChild de un swf que contienen un addChild en el foro de Flash y Actionscript en Foros del Web. chicooooooooooooos tengo swf que carga un swf (via addChild y load) Código: var contenedor = new Loader(); contenedor.load(new URLRequest("kia.swf")); addChild(contenedor); contenedor.x = 0 contenedor.y=0 stop(); ...
  #1 (permalink)  
Antiguo 10/05/2010, 11:59
 
Fecha de Ingreso: agosto-2009
Mensajes: 52
Antigüedad: 15 años, 4 meses
Puntos: 0
addChild de un swf que contienen un addChild

chicooooooooooooos

tengo swf que carga un swf (via addChild y load)

Código:
var contenedor = new Loader();
contenedor.load(new URLRequest("kia.swf"));
addChild(contenedor);
contenedor.x = 0
contenedor.y=0
stop();
el archivo se llama "bannerTOP2.swf"

por otro la en otro codigo, cargo ese swf (entre otros) pero me sale vació (y no es problema de rutas porque todos los swf están en la misma carpeta)

el otro código es
Código:
package{
    
    import flash.display.*;
    
    public class ImagenRotativa extends MovieClip{
        
        import flash.events.Event;
        import flash.net.*;
        import flash.utils.*;
        
        //Esta es la matriz que contiene las urls de todas las fotos
        var fotos:Array = ["bannerTOP1.swf","bannerTOP2.swf","bannerTOP3.swf"];
        var MC:MovieClip = new MovieClip();
        
        //En esta variable se almacena el valor del indice de la última URL cargada. El valor 0
        //es el índice de "001.jpg", el 1 seria el de "002.jpg" y así sucesivamente. 
        var actual:int = 0;
        
        //Aquí se almacena la última foto cargada
        var ultimaCargada;
        
        public function ImagenRotativa(){// constructor
            
            //La función ImagenRotativa, que toma su nombre de la clase, se ejecuta al crearse el 
            //objeto de la clase. Cuando se crea el objeto, le decimos que se ejecute cargarImagen por
            //primera vez.
            cargarImagen();
            
        }
        
        private function cargarImagen():void{
            
            /*
            Esta es la función que se encarga de cargar las imágenes. Lo primero es crear un objeto Loader
            para cargar en él las fotos. Una vez creado se le añade un Listener que nos permita saber cuando ha 
            terminado de cargarse el archivo. Con esta linea: 
            cargador.contentLoaderInfo.addEventListener(Event.COMPLETE,imagenCargada);
            estamos diciendo que queremos que se ejecute la función imagenCargada, cuando se ejecute el evento
            complete de cargador.
            */
            
            var cargador:Loader = new Loader();
            // se crea el listener
            cargador.contentLoaderInfo.addEventListener(Event.COMPLETE,imagenCargada);
            
            /*
            Creo la petición y le digo a cargador que la haga. Con esta instrucción: 
            fotos[actual], le estoy diciendo que coja el elemento de la matriz fotos, cuyo índice es = a actual
            */
            
            var peticion:URLRequest = new URLRequest(fotos[actual]);
            cargador.load(peticion);
            
        }
        
        private function imagenCargada(e:Event):void{
            /*
            Esta es la función que se ejecuta cuando la imagen se ha cargado. Lo primero que veo es si ya se había cargado
            alguna foto:
            
            ultimaCargada != null
            
            y si es así, la elimino, para que las fotos no vayan apilándose en la escena.
            Después, guardo el contenido cargado en la variable ultimaCargada, y lo añado al escenario:
            
            ultimaCargada = e.target.content;
            addChild(ultimaCargada);
            
            Ahora hay que aumentar actual. Hay que tener en cuenta, que actual no puede ser mayor que la longitud de la 
            matriz de fotos. Aquí, por ejemplo, si actual fuera 1000, cuando buscaramos en el índice 1000 de la matriz fotos, no
            encontrariamos ningún elemento. Es decir, hay que aumentar actual hasta que llegue al máximo, y entonces volver a empezar:
            (actual = 0).Eso es lo que hacemos con esta linea:
            actual = (actual==fotos.length-1)?0:actual+1;
            
            Por último, le decimos que cargue otra foto en dos segundos:
            
            setTimeout(cargarImagen,2000);
            
            donde 2000 es el tiempo en ms.
            */
            
            if(ultimaCargada != null){
                MC.removeChild(ultimaCargada);
                removeChild(MC);
                
            }
            ultimaCargada = e.target.content;
            MC.addChild(ultimaCargada);
            MC.width = 834;
            MC.height = 117;        
            MC.x = MC.y = 0;
        
            
            addChild(MC);
            actual = (actual==fotos.length-1)?0:actual+1;
            setTimeout(cargarImagen,1000);
            
        }
        
    }
}


y no se que pasa que no sale :(


pd:cuandp prueba el archivo "bannerTOP2.swf" solo si funciona perfecto, acaso no se puede hacer un addchild de algo que a su vez haga addchild?
  #2 (permalink)  
Antiguo 10/05/2010, 13:30
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años, 1 mes
Puntos: 51
Respuesta: addChild de un swf que contienen un addChild

Código PHP:
package {

    
import flash.display.*;
    
import flash.events.Event;
    
import flash.net.*;
    
import flash.utils.*;
    public class 
ImagenRotativa extends MovieClip {
        
//Esta es la matriz que contiene las urls de todas las fotos
        
public var fotos:Array=["bannerTOP1.swf","bannerTOP2.swf","bannerTOP3.swf"];
        public var 
MC:MovieClip=new MovieClip  ;

        
//En esta variable se almacena el valor del indice de la última URL cargada. El valor 0
        //es el índice de "001.jpg", el 1 seria el de "002.jpg" y así sucesivamente. 
        
public var actual:int=0;

        
//Aquí se almacena la última foto cargada
        
public var ultimaCargada:DisplayObject;

        public function 
ImagenRotativa() {// constructor

            //La función ImagenRotativa, que toma su nombre de la clase, se ejecuta al crearse el 
            //objeto de la clase. Cuando se crea el objeto, le decimos que se ejecute cargarImagen por
            //primera vez.
            
cargarImagen();

        }

        private function 
cargarImagen():void {

            
/*
                        Esta es la función que se encarga de cargar las imágenes. Lo primero es crear un objeto Loader
                        para cargar en él las fotos. Una vez creado se le añade un Listener que nos permita saber cuando ha 
                        terminado de cargarse el archivo. Con esta linea: 
                        cargador.contentLoaderInfo.addEventListener(Event.COMPLETE,imagenCargada);
                        estamos diciendo que queremos que se ejecute la función imagenCargada, cuando se ejecute el evento
                        complete de cargador.
                        */

            
var cargador:Loader=new Loader  ;
            
// se crea el listener
            
cargador.contentLoaderInfo.addEventListener(Event.COMPLETE,imagenCargada);

            
/*
                        Creo la petición y le digo a cargador que la haga. Con esta instrucción: 
                        fotos[actual], le estoy diciendo que coja el elemento de la matriz fotos, cuyo índice es = a actual
                        */
            
            
var peticion:URLRequest=new URLRequest(fotos[actual]);
            
cargador.load(peticion);

        }

        private function 
imagenCargada(e:Event):void {
            
/*
                        Esta es la función que se ejecuta cuando la imagen se ha cargado. Lo primero que veo es si ya se había cargado
                        alguna foto:
                        
                        ultimaCargada != null
                        
                        y si es así, la elimino, para que las fotos no vayan apilándose en la escena.
                        Después, guardo el contenido cargado en la variable ultimaCargada, y lo añado al escenario:
                        
                        ultimaCargada = e.target.content;
                        addChild(ultimaCargada);
                        
                        Ahora hay que aumentar actual. Hay que tener en cuenta, que actual no puede ser mayor que la longitud de la 
                        matriz de fotos. Aquí, por ejemplo, si actual fuera 1000, cuando buscaramos en el índice 1000 de la matriz fotos, no
                        encontrariamos ningún elemento. Es decir, hay que aumentar actual hasta que llegue al máximo, y entonces volver a empezar:
                        (actual = 0).Eso es lo que hacemos con esta linea:
                        actual = (actual==fotos.length-1)?0:actual+1;
                        
                        Por último, le decimos que cargue otra foto en dos segundos:
                        
                        setTimeout(cargarImagen,2000);
                        
                        donde 2000 es el tiempo en ms.
                        */
                
            
if(MC.getChildAt(0)){
                
MC.removeChild(MC.getChildAt(0));
            }
            
ultimaCargada=e.target.content as DisplayObject;
            
MC.addChildAt(ultimaCargada,0);
            
MC.width=834;
            
MC.height=117;
            
MC.x=MC.y=0;
            
addChild(MC);
            
actual=(actual>fotos.length-1)?0:actual+1
            setTimeout
(cargarImagen,1000);

        }

    }

__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #3 (permalink)  
Antiguo 10/05/2010, 13:41
 
Fecha de Ingreso: agosto-2009
Mensajes: 52
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: addChild de un swf que contienen un addChild

lo hice y me salio

Código:
RangeError: Error #2006: El índice proporcionado está fuera de los límites.
    at flash.display::DisplayObjectContainer/getChildAt()
    at ImagenRotativa/imagenCargada()

Última edición por Cristina_; 10/05/2010 a las 13:52
  #4 (permalink)  
Antiguo 11/05/2010, 04:56
 
Fecha de Ingreso: agosto-2009
Mensajes: 52
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: addChild de un swf que contienen un addChild

ayudaaaaaaaaaaaaaaaaaaaa :(
  #5 (permalink)  
Antiguo 11/05/2010, 07:45
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años, 1 mes
Puntos: 51
Respuesta: addChild de un swf que contienen un addChild

perdón me equivoque era esto
Código PHP:
     
            
if(MC.numChildren 0{
                
MC.removeChild(MC.getChildAt(0));
            } 
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #6 (permalink)  
Antiguo 11/05/2010, 16:49
 
Fecha de Ingreso: agosto-2009
Mensajes: 52
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: addChild de un swf que contienen un addChild

Parece que no hay solución para mi problema, adjunto el archivo para quien lo quien me pueda ayudar

http://rapidshare.com/files/38622151...anner.rar.html

gracias y beso
  #7 (permalink)  
Antiguo 11/05/2010, 18:23
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años, 1 mes
Puntos: 51
Respuesta: addChild de un swf que contienen un addChild

1-bueno creo que el problema lo tienes por culpa del bannerTOP2.swf al parecer esta solicitando la carga del archivo kia.swf ,que es un archivo as2, normalmente suele dar problemas al cargarlos con loader

2-muy importante: si a un MovieClip o Sprite vacío alteras los valores del width y height produce error y no reacciona, esos valores ay que modificarlos siempre y cuando sepamos que dicho mc o sp no esta vació

aquí te subo los archivos ya modificados y en funcionamiento

http://www.megaupload.com/?d=S5URWDXF

PD:el archivo Kia lo e convertido en as3 , también el código del archivo ImagenRotativa lo puedes aplicar para la carga de archivos con as2 sin código complejo
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft

Etiquetas: addchild, swf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:53.