Comunidad de diseño web y desarrollo en internet online

sobre el Sistema de noticias para una web en Flash xml y css

Citar            
MensajeEscrito el 18 Oct 2006 12:19 am
Hola a toda la comunidad, estoy trabajando en el tutorial de noticias para una web en flash, xml y css. Me ha funcionado bien, pero quiero que la hacer clic sobre una noticia, se abra una ventana pop up con la nota relacionada. De antemano gracias por la ayuda

El codigo del actionscript es:

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

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

//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,123,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,123,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 que entra forzamos el movimiento 
   if (primera_vez == undefined){ 
       
      _root.onEnterFrame = function(){ 
         for (i=0; i<long; i++){ 
             
            if (_root["caja"+i]._y < (_root["caja"+i]._height * (-1) )){ 
               y_abajo = -10; 

               //Calculamos donde hay que posicionar el clip que llega arriba 
               for (j=0; j<long; j++){ 
                   
                  //Todos los clips que esten por debajo de 0 
                  if (_root["caja"+j]._y > (-10)){ 
                     //Cogemos la posicion y que haya mas abajo 
                     y_actual = _root["caja"+j]._y; 
                     if (y_actual > y_abajo){ 
                        y_abajo = y_actual; 
                        altura_abajo =_root["caja"+j]._height; 
                     } 
                  } 
               } 
               //Lo posicionamos abajo siendo esta posicion: 
               //"y del clip actual" = "posicion del clip de mas abajo" + "alto del clip de mas abajo" 
               _root["caja"+i]._y = y_abajo + altura_abajo - 1; 

            } 
            _root["caja"+i]._y -= 1; 
         } 
      } 
      primera_vez = false; 
   } 
   /*-------------------------------------------------------------------------------*/ 
    
    
   //Si nos salimos de encima de las cajas se mueven 
   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); 
         } 
         //Si nos ponemos encima de la caja, eliminamos el evento y se para 
         _root["caja"+i].onRollOver = function(){ 
            //Iluminar 
            this.colorcaja.setRGB(0xffcc99); 
            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++){ 
                   
                  if (_root["caja"+i]._y < ( _root["caja"+i]._height * (-1) )){ 
                     y_abajo = -10; 
       
                     //Calculamos donde hay que posicionar el clip que llega arriba 
                     for (j=0; j<long; j++){ 
                         
                        //Todos los clips que esten por debajo de 0 
                        if (_root["caja"+j]._y > (-10)){ 
                           //Cogemos la posicion y que haya mas abajo 
                           y_actual = _root["caja"+j]._y; 
                           if (y_actual > y_abajo){ 
                              y_abajo = y_actual; 
                              altura_abajo = _root["caja"+j]._height; 
                           } 
                        } 
                     } 
                     //Lo posicionamos abajo siendo esta posicion: 
                     //"y del clip actual" = "posicion del clip de mas abajo" + "alto del clip de mas abajo" 
                     _root["caja"+i]._y = y_abajo + altura_abajo - 1; 
       
                  } 
                  _root["caja"+i]._y -= 1; 
               } 
            } 
         } 
      } 
   } 
   //Si nos ponemos encima destruimos el evento 
   el_fondo.onRollOver = function(){ 
      delete _root.onEnterFrame; 
   } 
}


y el del xml es:

Código :

<noticias>
   <puerto titulo="Víctor Manuelle y Eddie Palmieri en vivo" urls="noti10.htm">En su próximo trabajo discográfico Víctor Manuelle incluirá dos composiciones suyas, grabadas al lado de la celebre orquesta del maestro Eddie Palmieri.</puerto>

   <puerto titulo="Shakira arraso en los premios Billboard Latinos" urls="http://www.carlosrovira.com">Gracias a seis galardones, Shakira se consagro como la gran triunfadora de la noche, en la ceremonia de entrega de los premios Billboard a la música latina.</puerto>

   <puerto titulo="King of Kings, lo nuevo de Don Omar" urls="http://www.design-nation.net/es">Después de casi dos años Don Omar nos trae una nueva producción discográfica titulada “King of Kings”.</puerto>

   <puerto titulo="Willie Colon no trabajara el primero de Mayo" urls="http://www.kadazuro.com/blog">El experimentado salsero neoyorquino (de origen puertorriqueño) Willie Colon, sumara su voz a la de muchos otros artistas, que apoyan la huelga latina en Estados Unidos.</puerto>

   <puerto titulo="Daddy Yankee pidió por la unión de la isla" urls="http://www.code4net.com">Al momento de recibir su primer galardón en la entrega de los Billboard Latinos, el rapero Daddy Yankee exclamo ¡Unión por favor!, al referirse a la situación interna de su natal Puerto Rico.</puerto>

   <puerto titulo="Arte en canvas proyecto que une a varios artistas nacionales" urls="http://www.asfusion.com/blog/">A beneficio de la fundación Menorah, personalidades como Juanes, Shakira, Juan Pablo Montoya y Gabriel García Marquez  entre otros, pintaran cerca de 200 carteras en canvas (lona), para ayudar a financiar la educación de los niños pobres en Bogotá.</puerto>
</noticias>

Por hermix

25 de clabLevel



 

msie
Citar            
MensajeEscrito el 18 Oct 2006 01:29 pm
un pop-up fuera de flash no?
en ese caso

Código :

   var ancho = 720;
   var alto = 520;
   getURL ("javascript:void(window.open('path/archivo.php+','_blank'))");

Por micheloud

341 de clabLevel



 

Misiones, Argentina

firefox
Citar            
MensajeEscrito el 18 Oct 2006 11:50 pm
OK, pero este codigo va en el action script? , en la mismo frame o en que parte. Gracias

Por hermix

25 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 Oct 2006 10:34 am

Código :

         //Si se hce click en la caja
         _root["caja"+i].onRelease = function(){ 
                var ancho = 720;
                 var alto = 520;
                 getURL ("javascript:void(window.open('path/archivo.php+','_blank'))");
         } 

Por micheloud

341 de clabLevel



 

Misiones, Argentina

firefox

 

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