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 = 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,268,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,268,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 += .5; } } 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, "_parent"); } //Si nos ponemos encima de la caja, eliminamos el evento y se para _root["caja"+i].onRollOver = function(){ //Iluminar this.colorcaja.setRGB(0xB9DCFF); 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 += .5; } } } } } }