Comunidad de diseño web y desarrollo en internet online

Lector de Noticas

Citar            
MensajeEscrito el 04 Ene 2007 11:51 am
Estaba haciendo un Lector de noticias con Xml y Flash y me acorde de este tutorial:

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, XD XD XD. 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..

Por Suriv

131 de clabLevel



 



Ultima edición por Suriv el 09 Ene 2007 09:48 am, editado 3 veces

firefox
Citar            
MensajeEscrito el 05 Ene 2007 04:40 am
bueno te puedo responder la 2.- usa _xscala y _yscala que tiene un rango % a 100% la imagen es de tamaño real si aumenta el % pues la imagen crece y al reves se achica, lo de la cuatro no es tan asi pero mira este ejemplo que tengo aqui espero que te sirva:

www.spgteam.com/noticiero.zip

Saludos espero que te sirva...

Por Hermany

103 de clabLevel



Genero:Masculino  

Santa Cruz Bolivia

firefox
Citar            
MensajeEscrito el 05 Ene 2007 07:41 am
Gracias Hermany, la verdad que no use el _xscale y el _yscale, lo probare

Sobre la cuestión 4, me respondo yo mismo.

Si se puede hacer con el paremetro _url o ._root_url nos devuelve la direccion de la pelicula swf, sabiendo esto, lo que hay que hacer es con un substring cambiar quitar el .swf y añadirle un .xml asi siempre buscara el xml con el mismo nombre del swf :D

Por Suriv

131 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ene 2007 10:27 am
Es una buena solucion para poner thumbails de las noticias, pero el problema existe cuando son de diferentes tamaños, por ejemplo la imagen 1 mide: 300 * 199 pero la imagen 2 mide 400 * 227, creo que a lo mejor lo que tengo que hacer es una conversion del objeto de mayor o menor medidad para que se ajuste a la medida que quiero....

Por Suriv

131 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ene 2007 10:28 am
dios mio que larga ,la pregunta :shock:
afortunadamente fuiste claro en las primeras lineas que si no te mando a las reglas del foro

en fin...
es la función que uso para cargar imágenes, con precarga y re-dimensionar la imagen a como quiera

Código :

/*
          asi se usa:
   imagen("tuCarpeta/tuImagen.loquesea",destino:MovieClip, ancho:Number, alto:Number);
*/
function imagen(imagen:String ,target_mc:MovieClip, maxW:Number, maxH:Number) {
   var precargador_mcl:MovieClipLoader = new MovieClipLoader();
   var listener:Object = new Object();
   var target_mc:MovieClip;
   var imagen:String;
   var nocache:String;
   var maxW:Number;
   var maxH:Number;
   listener.onLoadStart = function(target_mc) {
      trace("Iniciando");
      _root.attachMovie("barra", "barra_mc", this.getNextHighestDepth());//barra es un mc de 100 frames en la biblioteca
      redimensionar(barra_mc);
      _root.barra_mc._x = target_mc._x+(_root.barra_mc._width/2);
      _root.barra_mc._y = target_mc._y+(_root.barra_mc._height/2);
   };
   listener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
      trace("En progreso");
      var porcentaje:Number;
      porcentaje = Math.round((loadedBytes*100)/totalBytes);
      _root.barra_mc.gotoAndStop(porcentaje);
      target_mc._visible = false;
      target_mc.stop();
   };
   listener.onLoadComplete = function(target_mc) {
      trace("ya");
      _root.barra_mc.removeMovieClip();
      target_mc._visible = true;
      target_mc.play();
   };
   listener.onLoadInit = function(target_mc) {
      redimensionar(target_mc);
   };
   function redimensionar(redimensionar_mc:MovieClip) {
      var redimensionar_mc:MovieClip;
      if (redimensionar_mc._width>=maxW || redimensionar_mc._height>=maxH) {
         while (redimensionar_mc._width>=maxW || redimensionar_mc._height>=maxH) {
            redimensionar_mc._width *= 0.99;
            redimensionar_mc._height *= 0.99;
         }
      }
   }
   precargador_mcl.addListener(listener);
   nocache = "?nocaching="+random(65000);
   precargador_mcl.loadClip(imagen+nocache, target_mc);
}


si la quieres entender mejor anda al tutorial de precarga, me base en ese para crear esta función

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA



Ultima edición por Inyaka el 08 Ene 2007 12:28 pm, editado 1 vez

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 08 Ene 2007 11:25 am
Bueno solucionado lo de la Css

Ahora me pondre con lo de inyaka, digamos que llevo el 75% de la preguntas que realize.

Por Suriv

131 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Ene 2007 09:49 am
Puesto el Codigo Url, por si alguien le sirve..

Por Suriv

131 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 May 2008 02:16 pm
Hola, tengo una preguntita... como se puede hacer para que las imagenes se cambien automáticamente por ejemplo cuando pasan 2 segundos... soy nuevo en esto pero a ver si este código puede servir:

Código :

function TiempoMovie() {
   tiempo = new Date();
   hora = tiempo.getTime(1);
   if(noticias_xml.firstChild.childNodes[indice-1] != null){//retringue  a avanzar solo si hay una [noticia] anterior
         indice++; //reducciendo en uno el indice
         cargarDatos(indice); //recuprando y mostrando los datos y la imagen en la pantalla
         }
}


Desde ya aviso que no funciona!!!

Por rakshaka

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 May 2008 09:31 am
Emmmm... ningun experto que pueda ayudar?

Por rakshaka

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 May 2008 09:48 am
Bueno aqui les voy a dejar el código MUY SIMPLE para 5 secciones... osea, que creemos botones 1 2 3 4 5 como en este ejemplo y hacer que se ejecuten:
Los nombres de los botones seran uno_btn dos_btn y asi... escriban el código preferentemente bajo siguiente_btn o anterior_btn espero se entienda!!!

Código :

uno_btn.onPress = function(){
   //comprobando si existe una elemento [noticia] anterior
   if(noticias_xml.firstChild.childNodes[indice-1] != null){//retringue  a avanzar solo si hay una [noticia] anterior
         indice=0; //reducciendo en uno el indice
         cargarDatos(indice); //recuprando y mostrando los datos y la imagen en la pantalla
         }
   }
dos_btn.onPress = function(){
   //comprobando si existe una elemento [noticia] anterior
   if(noticias_xml.firstChild.childNodes[indice=1] != null){//retringue  a avanzar solo si hay una [noticia] anterior
         indice=1; //reducciendo en uno el indice
         cargarDatos(indice); //recuprando y mostrando los datos y la imagen en la pantalla
         }
   }
tres_btn.onPress = function(){
   //comprobando si existe una elemento [noticia] anterior
   if(noticias_xml.firstChild.childNodes[indice=2] != null){//retringue  a avanzar solo si hay una [noticia] anterior
         indice=2; //reducciendo en uno el indice
         cargarDatos(indice); //recuprando y mostrando los datos y la imagen en la pantalla
         }
   }
cuatro_btn.onPress = function(){
   //comprobando si existe una elemento [noticia] anterior
   if(noticias_xml.firstChild.childNodes[indice=3] != null){//retringue  a avanzar solo si hay una [noticia] anterior
         indice=3; //reducciendo en uno el indice
         cargarDatos(indice); //recuprando y mostrando los datos y la imagen en la pantalla
         }
   }
cinco_btn.onPress = function(){
   //comprobando si existe una elemento [noticia] anterior
   if(noticias_xml.firstChild.childNodes[indice=4] != null){//retringue  a avanzar solo si hay una [noticia] anterior
         indice=4; //reducciendo en uno el indice
         cargarDatos(indice); //recuprando y mostrando los datos y la imagen en la pantalla
         }
   }


Solo me queda cambiarlo en tiempo y ya tamos!!!

Por rakshaka

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 May 2008 12:01 pm
A ver quien se copa y colabora que se puede sacar algo piola de aqui!

Por rakshaka

16 de clabLevel



 

firefox

 

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