me he estado pelando el coco intentando modicicar el siguiente código, pero no he logrado hacer que funcione como quisiera.
Código Original Flash:
Código PHP:
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("ejemplo.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,260,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(0xFFFFFF);
_root["caja"+i].micolor = "0xFFFFFF";
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,260,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, "_parent");
}
//Si nos ponemos encima de la caja, eliminamos el evento y se para
_root["caja"+i].onRollOver = function(){
//Iluminar
this.colorcaja.setRGB(0xF3FBFE);
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;
}
}
}
}
}
}
Continua »