Comunidad de diseño web y desarrollo en internet online

Carga de swf y xml

Citar            
MensajeEscrito el 07 Mar 2006 06:19 am
Hola amigos...

Haber si alguien me puede orientar un poquito. Resulta que tengo un sistema de noticias en un swf y carga desde un xml las noticias, así como el formato desde un css. Funciona de maravilla. El problema viene cuando he intentado cargar ese swf de noticias en otro swf (que sería como la película madre) aparece el texto "cargando xml" y "cargando css" y cuando esos textos desaparecen, debería cargarse la información del xml, con el formato del css. pero no es así ya que simplemente no aparece nada...

este es el código para el swf de las noticias:

Código :

stop();

//Cargar XML de las noticias
noticias = new XML();
noticias.ignoreWhite = true;
noticias.onLoad = function (){

   //Porcentajes y esas cosas
   totalxml = noticias.getBytesTotal();
   cargadoxml = noticias.getBytesLoaded();
   porcentajexml = Math.round((cargadoxml/totalxml)*100);

   //Si esta cargado del todo
   if (porcentajexml >= 100) {
      //Borramos el cargando
      removeMovieClip(cargando);
      
      //Shortcuts del XML
      notis_puerto = new Array();
      titulo = new Array();
      urls = new Array();
      
      //Cogemos el numero de noticias
      long = noticias.firstChild.childNodes.length;
      
      cargarCSS();
   }
}

//Atacheamos y posicionamos el "cargando xml"
attachMovie("carga_xml","cargando",2);
cargando._x = 45;
cargando._y = 120; //94

//Atacheamos la linea de abajo del todo
attachMovie("linea","linea_abajo",5000);
linea_abajo._x = 0;
linea_abajo._y = 241; //329

//Atacheamos la caja de fondo

//Cargamos XML
noticias.load("noticias.xml");


/*-------------------------------------------------------------------------------*/
/*---------------------   FUNCION PARA CARGAR LA HOJA CSS    --------------------*/
/*-------------------------------------------------------------------------------*/
function cargarCSS(){
   //Creamos la hoja de estilo
   estailo = new TextField.StyleSheet();
   
   //Cuando este cargando...
   estailo.onLoad = function(){
      
      //Porcentajes y esas cosas
      totalcss = estailo.getBytesTotal();
      cargadocss = estailo.getBytesLoaded();
      porcentajecss = Math.round((cargadocss/totalcss)*100);
   
      //Si esta cargado del todo
      if (porcentajecss >= 100) {
         //Borramos el cargando
         removeMovieClip(cargando2);
         
         //Una vez esta cargada la CSS ya podemos saber cuantas lineas hay
         //por cada caja de texto
         
         //Creamos un clip y un campo de texto temporales
         _root.createEmptyMovieClip("temp_mc", 7);
         
         //Al campo de texto le ponemos el mismo tamaño de ancho que va a haber en
         //el de verdad. Le ponemos alto 16, que es lo que mide una linea. Así 
         //podemos saber el número de líneas que tenemos.
         temp_mc.createTextField ("notis_txt",8,-150,-20,187,16);   //("notis_txt",8,-150,-20,168,16)
         
         //Ponemos las propiedades a nuestro campo de texto nuevo
         temp_mc.notis_txt.multiline = true;
         temp_mc.notis_txt.wordWrap = true;
         temp_mc.notis_txt.html = true;
         
         for (i=0; i<long; i++){
            //Cogemos los titulos de las noticias
            titulo[i] = noticias.firstChild.childNodes[i].attributes.titulo;
            
            //Cogemos las urls de las noticias
            urls[i] = noticias.firstChild.childNodes[i].attributes.urls;
   
            //Cogemos el texto y lo ponemos en la caja de texto temporal
            temp_mc.notis_txt.htmlText = "<p class='tit'>"+titulo[i]+"</p><br><p class='txt'>"+noticias.firstChild.childNodes[i].firstChild+"</p>";
            
            //Cogemos el numero de lineas por texto
            notis_puerto[i] = temp_mc.notis_txt.maxscroll-1;
         }
         //Eliminamos el clip temporal
         removeMovieClip(_root["temp_mc"]);
         //Montamos las noticias
         montarNoticias();
      }

   }
   attachMovie("carga_css","cargando2",3);
   cargando2._x = 45;
   cargando2._y = 120; //94
   estailo.load("noticias.css");
}


/*-------------------------------------------------------------------------------*/
/*---------------------   FUNCION PARA MONTAR LAS NOTICIAS    -------------------*/
/*-------------------------------------------------------------------------------*/
function montarNoticias(){
   par = true;
   for (i=0; i<long; i++){
      //Ponemos la caja
      _root.attachMovie ("caja_info","caja"+i,i*10);
      //Creamos el color
      _root["caja"+i].colorcaja = new Color(_root["caja"+i].fondo.fondocolor);
      //Le damos una altura igual a 16 por el numero de lineas que tenga
      _root["caja"+i].fondo._height = 16 * notis_puerto[i];
      
      //Pintamos la caja
      if (par == true){
         _root["caja"+i].colorcaja.setRGB(0xEEEEEE);
         _root["caja"+i].micolor = "0xEEEEEE";
         par = false;
      }
      else{
         _root["caja"+i].colorcaja.setRGB(0xFFFFFF);
         _root["caja"+i].micolor = "0xFFFFFF";
         par = true;
      }
      
      //Si no existe altura, le damos 0 y asi se posiciona la primera caja
      //en y=0
      if (altura == undefined){
         altura = 0;
      }
      //Si existe, le damos una altura igual, a:
      //"altura acumulada" = "altura acumulada" + "altura anterior clip"
      else{
         altura = altura + _root["caja"+(i-1)].fondo._height;
      }
      
      //Posicionamos la caja
      _root["caja"+i]._x = 0;
      _root["caja"+i]._y = altura;
      
      //Creamos la caja de texto y ponemos sus propiedades
      _root["caja"+i].createTextField("texto_txt",i*10,2,1,187,16 * notis_puerto[i]); //("texto_txt",i*37,2,1,168,16 * notis_puerto[i])
      _root["caja"+i].texto_txt.html = true;
      _root["caja"+i].texto_txt.multiline = true;
      _root["caja"+i].texto_txt.wordWrap = true;
      _root["caja"+i].texto_txt.border = false;
      _root["caja"+i].texto_txt.selectable = false;
      _root["caja"+i].direc_url = urls[i];
      
      //Atacheamos al texto la hoja CSS
      _root["caja"+i].texto_txt.styleSheet = estailo;
      
      //Ponemos el titulo
      _root["caja"+i].texto_txt.htmlText = "<p class='tit'>"+titulo[i]+"</p><br>";

      //Ponemos los textos de las noticias
      _root["caja"+i].texto_txt.htmlText += "<p class='txt'>"+noticias.firstChild.childNodes[i].firstChild+"</p>";
   }
   //Mostramos la pestañita
   //attachMovie("pestana","pestanita",2000);
   //pestanita._x = 0;
   //pestanita._y = 0;
   
   
   //siguiente_y = 0;
   //y_arriba = 0;
   
   //Posicionamos todos los clips por debajo de 330 sobre 0
   //Empezamos por el ultimo y vamos subiendo
   for (i=long; i>0; i--){
      if (_root["caja"+i]._y > 242){ //330
         siguiente_y = siguiente_y - _root["caja"+i]._height + 1;
         _root["caja"+i]._y = siguiente_y;
      }
   }
   
   //Una vez esta todo montado movemos las noticias
   moverNoticias();
}

/*-------------------------------------------------------------------------------*/
/*---------------------   FUNCION PARA MOVER LAS NOTICIAS    --------------------*/
/*-------------------------------------------------------------------------------*/
function moverNoticias(){
   //Si es la primera vez forzamos el movimiento, si no empiezan paradas las cajas
   if (primera_vez == undefined){
      //Creamos el evento y se empiezan a mover las cajas
      _root.onEnterFrame = function(){
         
         for (i=0; i<long; i++){
            //Si la caja llega a abajo del todo
            if (_root["caja"+i]._y > 242){ //330
               y_arriba = 0;
               
               //Calculamos donde hay que posicionar el clip que llega abajo
               for (j=0; j<long; j++){
                  //Todos los clips que esten por encima de 0
                  if (_root["caja"+j]._y < 0){
                     //Cogemos la posicion y que haya mas arriba
                     y_actual = _root["caja"+j]._y;
                     if (y_actual < y_arriba){
                        y_arriba = y_actual;
                     }
                  }
               }
               //Lo posicionamos arriba, siendo esta posicion:
               //"y del clip actual" = "posicion del clip de mas arriba" - "altura del clip actual" + 1;
               _root["caja"+i]._y = y_arriba - _root["caja"+i]._height + 1;
            }
            //Hacemos que vayan bajando las cajas
            _root["caja"+i]._y += 1;
         }
      }
      primera_vez = false;
   }
   /***************************************************************************/
   
   
   //"el_fondo" controla a cada fotograma si estamos o no encima de las noticias
   el_fondo.onEnterFrame = function(){
      for (i=0; i<long; i++){
         //Si clicamos en la caja, vamos a la direccion "x"
         _root["caja"+i].onPress = function(){
            getURL (this.direc_url, "_blank");
         }
         //Si nos ponemos encima de la caja, eliminamos el evento y se para
         _root["caja"+i].onRollOver = function(){
            //Iluminar
            this.colorcaja.setRGB(0xED4F43); //CDFBFE
            delete _root.onEnterFrame;
         }
         //Si nos salimos de las cajas, se empieza a mover otra vez
         _root["caja"+i].onRollOut = function(){
            //Pintamos la caja con el color anterior
            this.colorcaja.setRGB(this.micolor);
            
            //Creamos el evento y se empiezan a mover las cajas
            _root.onEnterFrame = function(){
               
               for (i=0; i<long; i++){
                  //Si la caja llega a abajo del todo
                  if (_root["caja"+i]._y > 242){ //330
                     y_arriba = 0;
                     
                     //Calculamos donde hay que posicionar el clip que llega abajo
                     for (j=0; j<long; j++){
                        //Todos los clips que esten por encima de 0
                        if (_root["caja"+j]._y < 0){
                           //Cogemos la posicion y que haya mas arriba
                           y_actual = _root["caja"+j]._y;
                           if (y_actual < y_arriba){
                              y_arriba = y_actual;
                           }
                        }
                     }
                     //Lo posicionamos arriba, siendo esta posicion:
                     //"y del clip actual" = "posicion del clip de mas arriba" - "altura del clip actual" + 1;
                     _root["caja"+i]._y = y_arriba - _root["caja"+i]._height + 1;
                  }
                  //Hacemos que vayan bajando las cajas
                  _root["caja"+i]._y += 1;
               }
            }
         }
      }
   }
}





y este es el codigo de la película en donde se cargará el swf de las noticias...

Código :


this.createEmptyMovieClip("vacio", 1);
vacio.loadMovie("noticiero.swf");



Aprecio mucho la ayuda y un buen jalón de orejas, porque seguro que la solución es muy sencilla...

Gracias. :)

Por pharpbx

15 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 10 Mar 2006 11:28 pm
ok, ya está solucionadoal parecer el problema es con las rutas, así que solo coloqué este código

Código :

this._lockroot = true 


en el swf de las noticias y se cargo perfecto en el otro swf.

Bien, ahora el problema que tengo es que el swf donde cargo la pelicula de noticias es más grande y aparece más información de la debida.

Intenté poner una máscara con

Código :

mi_mc.setMask(mi_mascara); 


he probado en utilizar mi_mc con

Código :

_root["caja"+i]  


que es donde se montan las noticias y con

Código :

texto_txt  


que es el TextField donde se cargan las noticias del xml.

Para la máscara, utilizo un mc que está en la biblioteca y lo bajo así:

Código :

_root.attachMovie("mascara","mascara1");  


pero nada de eso me funciona.

¿Alguien puede ayudarme?

Muchas gracias

Saludos

Por pharpbx

15 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 10 Feb 2009 03:50 am
1.no soy un experto pero si ya bloqeaste el "root" para q intentas dar referencia a el , y otra cosa por q en vez de tratar de ocultar la informacion por q mejor no usas un scroll ?

2.estas seguro de q cuando estas poniendo la mascara los 2 mcs existen tanto la mascara , como lo q vas a enmascarar?

voy a chekar mejor tu code, para darte otras ideas por el momento es todo ... algien sabe , hechen el cable...

Por wil01

22 de clabLevel



Genero:Masculino  

firefox

 

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