Comunidad de diseño web y desarrollo en internet online

Problema con noticias flash + XML

Citar            
MensajeEscrito el 07 Jul 2009 08:34 pm
hola en el siguiente sitio tengo unas noticias a mano izquierda http://www.snf-chile.com/ , mi problema es que las noticias corren de arriba hacia abajo y me estan pidiendo que corran la reves, es decir de abajo hacia arriba, para que primero se lea el titulo y luego la noticia.

El archivo contiene 2 capas, una con el action y otra con el movie clip que tiene nombre de instancia el_fondo, y tambien contiene un estilo donde se define la tipografia el tamaño y color para el titulo y para la noticia, pero ese archivo no viene al caso en este momento.

Estos el Action Script que contiene el FLA que carga el XML:

Código ActionScript :

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 = 94;

//Atacheamos la linea de abajo del todo
attachMovie("linea","linea_abajo",5000);
linea_abajo._x = 0;
linea_abajo._y = 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,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 = 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*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 > 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 > 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(0xCDFBFE);
            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 > 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;
               }
            }
         }
      }
   }
}


Muchas gracias de ante mano9, ojala puedan ayudarme se los agradeceria muchisimo.

Por Moriarte

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Jul 2009 10:25 pm
alguien me puede ayudar porfavor ?

Por Moriarte

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Jul 2009 02:21 am
Hola yo cambiaria

_root["caja"+i]._y += 1;

Por
_root["caja" + i]._y = _root["caja" + i]._y - 1;

De esa forma el texto subiría

Saludos Marcelo

Por webflash

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Jul 2009 03:26 am
Perdón viendo el código no es solo eso, tenes que modificar varios parámetros, donde carga el texto para que luego de llegar al fina lo repita, el fondo etc. Déjame ver y esto si tiene solución.
tenes correo

Por webflash

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Jul 2009 04:52 am

webflash escribió:

Perdón viendo el código no es solo eso, tenes que modificar varios parámetros, donde carga el texto para que luego de llegar al fina lo repita, el fondo etc. Déjame ver y esto si tiene solución.
tenes correo


Si maestor [email protected], te agradesco muchisimo la ayuda.

Por Moriarte

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Jul 2009 11:18 pm

Código ActionScript :

noticias = new XML(); 
noticias.ignoreWhite = true; 
noticias.onLoad = function() 
{ 
   totalxml = noticias.getBytesTotal(); 
   cargadoxml = noticias.getBytesLoaded(); 
   porcentajexml = Math.round((cargadoxml / totalxml) * 100); 
 
   if (porcentajexml >= 100) 
   { 
      removeMovieClip(cargando); 
      notis_puerto = new Array(); 
      titulo = new Array(); 
      urls = new Array(); 
      long = noticias.firstChild.childNodes.length; 
      cargarCSS(); 
   } 
}; 
 
attachMovie("carga_xml","cargando",2); 
cargando._x = 45; 
cargando._y = 94; 
 
attachMovie("linea","linea_abajo",5000); 
linea_abajo._x = 0; 
linea_abajo._y = 329; 
 
noticias.load("noticias.xml"); 
 
function cargarCSS() 
{ 
   estailo = new TextField.StyleSheet(); 
   estailo.onLoad = function() 
   { 
      totalcss = estailo.getBytesTotal(); 
      cargadocss = estailo.getBytesLoaded(); 
      porcentajecss = Math.round((cargadocss / totalcss) * 100); 
 
      if (porcentajecss >= 100) 
      { 
         removeMovieClip(cargando2); 
         _root.createEmptyMovieClip("temp_mc",7); 
         temp_mc.createTextField("notis_txt",8,-150,-20,168,16); 
         temp_mc.notis_txt.multiline = true; 
         temp_mc.notis_txt.wordWrap = true; 
         temp_mc.notis_txt.html = true; 
 
         for (i = 0; i < long; i++) 
         { 
            titulo[i] = noticias.firstChild.childNodes[i].attributes.titulo; 
            urls[i] = noticias.firstChild.childNodes[i].attributes.urls; 
            temp_mc.notis_txt.htmlText = "<p class='tit'>" + titulo[i] + "</p><br><p class='txt'>" + noticias.firstChild.childNodes[i].firstChild + "</p>"; 
            notis_puerto[i] = temp_mc.notis_txt.maxscroll - 1; 
         } 
         removeMovieClip(_root["temp_mc"]); 
         montarNoticias(); 
      } 
   }; 
   attachMovie("carga_css","cargando2",3); 
   cargando2._x = 45; 
   cargando2._y = 94; 
   estailo.load("noticias.css"); 
} 
function montarNoticias() 
{ 
   par = true; 
   for (i = 0; i < long; i++) 
   { 
      _root.attachMovie("caja_info","caja" + i,i * 10); 
      _root["caja" + i].colorcaja = new Color(_root["caja" + i].fondo.fondocolor); 
      _root["caja" + i].fondo._height = 16 * notis_puerto[i]; 
      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 = "0xEEEEEE"; 
         par = true; 
      } 
      if (altura == undefined) 
      { 
         altura = 0; 
      } 
      else 
      { 
         altura = altura + _root["caja" + (i - 1)].fondo._height; 
      } 
      _root["caja" + i]._x = 0; 
      _root["caja" + i]._y = altura; 
      _root["caja" + i].createTextField("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]; 
      _root["caja" + i].texto_txt.styleSheet = estailo; 
      _root["caja" + i].texto_txt.htmlText = "<p class='tit'>" + titulo[i] + "</p><br>"; 
      _root["caja" + i].texto_txt.htmlText += "<p class='txt'>" + noticias.firstChild.childNodes[i].firstChild + "</p>"; 
   } 
   attachMovie("pestana","pestanita",2); 
   pestanita._x = 0; 
   pestanita._y = 0; 
 
   siguiente_y = 0; 
   y_arriba = 0; 
 
   for (i = long; i > 0; i--) 
   { 
      if (_root["caja" + i]._y < -50) 
      { 
         siguiente_y = siguiente_y + _root["caja" + i]._height + 1; 
         _root["caja" + i]._y = siguiente_y; 
      } 
   } 
   moverNoticias(); 
} 
function moverNoticias() 
{ 
   if (primera_vez == undefined) 
   { 
      _root.onEnterFrame = function() 
      { 
         for (i = 0; i < long; i++) 
         { 
            if (_root["caja" + i]._y < -50) 
            { 
               y_arriba = 330; 
               for (j = 0; j < long; j++) 
               { 
                  if (_root["caja" + j]._y > 380) 
                  { 
                     y_actual = _root["caja" + j]._y; 
                     if (y_actual > y_arriba) 
                     { 
                        y_arriba = y_actual; 
                     } 
                  } 
               } 
               _root["caja" + i]._y = y_arriba + _root["caja" + i]._height - 1; 
            } 
            _root["caja" + i]._y -= 1; 
         } 
      }; 
      primera_vez = false; 
   } 
   el_fondo.onEnterFrame = function() 
   { 
      for (i = 0; i < long; i++) 
      { 
         _root["caja" + i].onPress = function() 
         { 
            getURL(this.direc_url, "_blank"); 
         }; 
         _root["caja" + i].onRollOver = function() 
         { 
            this.colorcaja.setRGB(0xCDFBFE); 
            delete _root.onEnterFrame; 
         }; 
         _root["caja" + i].onRollOut = function() 
         { 
            this.colorcaja.setRGB(this.micolor); 
 
            _root.onEnterFrame = function() 
            { 
               for (i = 0; i < long; i++) 
               { 
                  if (_root["caja" + i]._y < -50) 
                  { 
                     y_arriba = 330; 
 
                     for (j = 0; j < long; j++) 
                     { 
                        if (_root["caja" + j]._y > 380) 
                        { 
                           y_actual = _root["caja" + j]._y; 
                           if (y_actual > y_arriba) 
                           { 
                              y_arriba = y_actual; 
                           } 
                        } 
                     } 
                     _root["caja" + i]._y = y_arriba + _root["caja" + i]._height - 1; 
                  } 
                  _root["caja" + i]._y -= 1; 
               } 
            }; 
         }; 
      } 
   }; 
}

Copia, Pega
Saludos ^^

Por webflash

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Jul 2009 12:21 am
Master muchisimas gracias te pasaste, la unica duda que me queda es la siguiente, actualize el noticiero, y sube perfecto, pero depronto al llegar la noticia arriba como que desaparece de la nada , es decir va pasando la noticia y en un punto desaparece.

http://www.snf-chile.com/

dejo el link para que veas a lo que me refiero.

Por Moriarte

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Jul 2009 12:22 am
y mirandolo mas detenidamente en un momento se montan las noticias entre si :(

Por Moriarte

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Jul 2009 10:48 pm
Que raro a mi me paso que desaparece, pero lo solucione modificando el valor -50 en if (_root["caja" + i]._y < -50) , dale mayor valor -60. El que se montaran también pero se soluciono. El que tengo esta bien si queres te mando el swf y el fla.
Entre a ese link y probé el swf modificado y funciona.

Por webflash

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Jul 2009 10:50 pm
Pásame el xml tal vez es algo en el

Por webflash

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Jul 2009 11:40 pm
el problema continua se me montan y desparecen las noticias incluso variando el valor -50 por -60 :(

webflash te envie los archivos compriomidos por mp es una direccion directa de descarga de megaupload para ver si me ayudas con eso.

Muchas gracias :D

Por Moriarte

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Jul 2009 11:10 pm
up ?? alguien que me ayude ?

Por Moriarte

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Jul 2009 11:43 pm
??

Por Moriarte

12 de clabLevel



 

firefox

 

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