Lector de noticias XML en Flash con imagenes
Claro que cuando me he decidido añadir unas cosas un poco mas personalizadas y no me funcionaban como esperaba.
He puesto las mismas variables para que no creen confusión
Son varias preguntas:
1 -- ¿Como añadir un enlace? -- Resuelto mientras escribia el Post
2 -- ¿Como crear estilos Css en Flash? -- Resuelto 08/01/2007
3 -- ¿Como hacer un preload de la imagen + la dimension de la imagen del movie clip.?
4 -- ¿Se puede elegir otras noticias? -- Resuelto 05/01/2007
Empezemos por la primera pregunta:
1 -- ¿Como añadir un enlace? -- Resuelto mientras escribia el Post
He pensasdo una manera cojiendo el ejemplo.
primero en el xml
Código :
<noticia fecha="05/08/2007" d1rx="www.cristalab.com" enl3="Mas.."> <titulo>Apple y HP venderán portátiles con pantallas iluminadas con LEDs</titulo> <mensaje>Una de rumores sobre portátiles donde aparezcan HP y Apple. No, en principio nada relacionado con las presentaciones que se esperan para la Macworld de la semana que viene, sino que nos iríamos más a la segunda mitad del año.</mensaje> <image>macbook.jpg</image> </noticia>
Lo que añadido es dirx y enl3 --> Donde tendrán la dirección de la Página y un nombre...
en el Flash, en la funcion cargarDatos(_indice:Number)
Código :
//Se inicializan variables utilizadas para almenar los datos de una noticia var fecha:String; var titulo:String; var mensaje:String; var dirx:String; var enl3:String; var imagen:String; //Se accede al primer elemento [noticia] y se recupera la fecha desde el atributo [fecha] fecha = noticias_xml.firstChild.childNodes[_indice].attributes.fecha; d1rx = noticias_xml.firstChild.childNodes[_indice].attributes.d1rx; enl3 = noticias_xml.firstChild.childNodes[_indice].attributes.enl3; //El resto es igual que en el tutorial //Cargamos los estilos mediante Css para un cambio mas generalizado, si cambiamos la web. _root.mensaje_txt.htmlText = ""; _root.mensaje_txt.htmlText += "<p align='center'><font color='#006633' size='12'><b>"+titulo+"</b></font></p>"; _root.mensaje_txt.htmlText += "<p>"+mensaje+"</p>"; _root.mensaje_txt.htmlText += "<a href='http://"+d1rx+"'><font color='#FF0000'>"+enl3+"</font></a>"; _root.mensaje_txt.htmlText += "<font color='#666666' size='10'>Publicado: "+fecha+"</font>";
como vereis he creado
Código :
_root.mensaje_txt.htmlText += "<a href='http://"+d1rx+"'><font color='#FF0000'>"+enl3+"</font></a>";
Funciona
Decir que mientras estaba redactando este Post, resolví el problema, . De todas formas lo pongo por si alguien le viene bien ....
2-- ¿Como crear estilos Css en Flash?
Tutorial: Usar Css en Flash
Para que no digan que no busco.
Bueno el problemilla me viene no al cargar la hoja de estilos, es que no me coje los estilos que le asigno.
Creo que he puesto mal el sitio a cargar los datos o algo mal...
Por encima de la funcion cargarDatos(_indice:Number)
Código :
var myCSS = new TextField.StyleSheet(); //Especificamos la localización del archivo CSS, que creamos. var cssURL = "notcias.css"; //Escribimos el texto que queremos mostrar //pero como lo escribiriamos en HTML
Dentro de la funcion cargarDatos(_indice:Number)
Código :
...... ...... ...... ...... _root.mensaje_txt.htmlText += "<font color='#666666' size='10'>Publicado: "+fecha+"</font>"; //Cargamos el archivo CSS myCSS.onLoad = function(exito) { if (exito) { mensaje_txt.styleSheet = myCSS; mensaje_txt.text = ejemploTexto; } }
lo que pensaba era poner, sutituyendo la ultima linea de codigo
Código :
mensaje_txt.text = ejemploTexto;
Por esta otra
Código :
mensaje_txt.text = _root.mensaje_txt.htmlText;
Pero no me lo coje, decir que antes me lo Cargaba pero no se previsualizaba el texto ni la imagen (bueno si pero apenas menos de 1 segundo).
*****************
Resuelto 08/01/2007
Esta resuelto lo de las Css
Hay un metodo mas rapido, y simple si son textos pequeños.
No pongo mi codigo porque la idea o mas bien todo es sacado de aqui
Texto con enlaces en Flash al estilo HTML
****
3 -- ¿Como hacer dimensionare la imagen del movie clip y un preload de la imagen .?
Bueno esto son dos preguntas en una sola, la primera, tengo el movieclip pantalla_mc creado
en el primer fotogrma
Queria ponerle un tamaño justo.
¿Porque?
Simplemente no tenga que retocar la imagen, ya que a lo mejor esta imagen se va utilizar en otra página (ahorrando duplicacion de elementos).
creia que simplemente ponias
_root.pantalla_mc._height=199;
_root.pantalla_mc._width=300;
y se crea el moviclip con esas medidas, pero me he equivocado, lo curioso, es que cuando es
menor si me lo ajusta pero cuando el tamaño es mayor, pues no....
4-- ¿Se puede elegir otras noticias?
Esto es una idea, lo he estado pensando, pero primero tengo que solucionar los problemas para pasar al siguiente nivel.
como bien sabemos este lector de noticias, lee noticas.xml el cual se lo hemos puesto en AS.
Bueno que pasa que cuando tenemos dos noticias diferentes, dos xml diferentes, tendremos que cojer nuestro fla y generarlo, pero que pasa si se
pierde el fla, pues nada a volver a buscar el tutorial o acordarte......
Pienso que si tienes el swf + xml + XX, no necesitas generar el flash , el fla seria si se cambian cambios mas grandes.
Pero claro si generamos otro documento txt o dfr.... nos pasaria lo mismo.
Tendriamos que asociar el nombre del swf al nombre del xml.
Por ejemplo leo:
recursos.swf -- recursos.xml
frabrica.swf -- fabrica.xml
Los nombres de los documentos xml no se han cambiado en el fla.
¿Se puede hacer?
*******************************************
Resuelto 05/01/2007
Bueno pues si se puede hacer
Con el paremetro
Código :
_url
ó
Código :
._root_url
nos devuelve la direccion de la pelicula swf, sabiendo esto, lo que hay que hacer es con un substring quitar el .swf y añadirle un .xml asi siempre buscara el xml con el mismo nombre del swf
Mas tarde pondre el código de como lo he realizado
Bueno rectifico, con el substring nos devuelve la cadena, pero hay que hacer mas cosas y es mas complicado. Pero encontre un metodo mas facil el parametro slice o String.slice.
Método; devuelve una cadena que incluye el carácter start y todos los caracteres hasta el carácter end, pero sin incluir este último. El objeto String original no se modifica. Si no se especifica el parámetro end, el final de la subcadena es el final de la cadena. Si el valor de start es mayor o igual que el valor de end, el método devuelve una cadena vacía.
El código que realice
Código :
trace(_url); con = _root._url; fy = new String(con); frg = fy.slice(0,-3) +"xml";
Ya podemos tener una utilidad en varios lugares, sin abrir flash para cambiar la url....
*******************************************
Gracias de antemano..