Flash XML CDATA

La sección CDATA, es un nodo especial de XML, que permite a flash interpretar correctamente caracteres especiales y etiquetas HTML, veamos un ejemplo.

XML:
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  <enlaces>
  3.  <titulo>
  4.  <![CDATA[
  5.  <font color="#999999" face="Verdana" size="9">
  6.  <b>Mis enlaces favoritos</b>
  7.  </font>]]>
  8.  </titulo>
  9.  <categoria>
  10.  <![CDATA[
  11.  <font color="#999999" face="Verdana" size="9">
  12.  <b>Cat:&nbsp;</b><i>Blogs</i>
  13.  </font>
  14.  
  15. ]]>
  16.  </categoria>
  17.  <lista>
  18.  <![CDATA[
  19.  <font color="#760000" face="Verdana" size="9">
  20.  <ul>
  21.  <li><a href="http://www.asfusion.com/blog/index.cfm?setlan=es">ASFusion</a></li>
  22.  <li><a href="http://www.carlosrovira.com/">Carlos Rovira</a></li>
  23.  <li><a href="http://www.code4net.com/">Code 4 Net</a></li>
  24.  <li><a href="http://www.cristalab.com/">Cristalab</a></li>
  25.  <li><a href="http://www.design-nation.net/es/">Design-nation</a></li>
  26.  <li><a href="http://www.elecash.org/blog/">Elecash</a></li>
  27.  <li><a href="http://www.10-lab.com/blog/">Flash Lab</a></li>
  28.  <li><a href="http://www.flashla.com/">Flashla</a></li>
  29.  <li><a href="http://blog.innocuo.com/">Innocuo</a></li>
  30.  <li><a href="http://www.kadazuro.com/blog/">Kadazuro</a></li>
  31.  <li><a href="http://klr20mg.com/">Krl20Mg</a></li>
  32.  <li><a href="http://www.nomaster.com">nomaster</a></li>
  33.  <li><a href="http://www.oscartrelles.com/es/">Oscar Trelles</a></li>
  34.  <li><a href="http://www.sidedev.net/blog/">SideDev</a></li>
  35.  <li><a href="http://x-flash.org/blog/index.html">X-Flash</a></li>
  36.  </ul>
  37.  </font>]]>
  38.  </lista>
  39.  </enlaces>

ActionScript

Actionscript:
  1. Stage.scaleMode = "noscale";
  2. miXML = new XML();
  3. miXML.ignoreWhite = true;
  4. // -- creo un campo de texto
  5. createTextField("texto", this.getNextHighestDepth, 10, 10, "", "");
  6. texto.html = true;
  7. texto.multiline = true;
  8. texto.autoSize = true;
  9. // -- cargo XML
  10. miXML.onLoad = function(succes) {
  11.     if (succes) {
  12.         // --
  13.         var parent = this.firstChild.childNodes;
  14.         titulo = parent[0].firstChild.nodeValue;
  15.         categoria = parent[1].firstChild.nodeValue;
  16.         lista = parent[2].firstChild.nodeValue;
  17.         // --
  18.         texto.htmlText = titulo;
  19.         texto.htmlText += categoria;
  20.         texto.htmlText += lista;
  21.     }
  22. };
  23. // --
  24. miXML.load("mixml.xml");

Resultado

El siguiente ejemplo, es la película .swf publicada, como puedes observar, se trata de una lista igual a las que dibuja HTML.

This movie requires Flash Player 8

Descarga Cdata.zip

Cdata.zip se ha descargado 1,489 veces.

1 Votes | Average: 3 out of 51 Votes | Average: 3 out of 51 Votes | Average: 3 out of 51 Votes | Average: 3 out of 51 Votes | Average: 3 out of 5 (1 votos, promedio: 3 sobre 5)
Loading ... Loading ...

8 Responses to “Flash XML CDATA”


  1. 1 sergioelmoreno Feb 22nd, 2007 at 1:34 pm

    Hola Toni
    Espero no molestar con esta pregunta, pero por mucho que le doy vueltas al asunto no se porque sucede lo siguiente:
    He probado el tutorial y cuando publico el swf bajo Flash player 8 el interlineado se ensancha una barbaridad, sin embargo si lo publicamos bajo Flash player 7 se ve perfecto (como en tu ejem).
    ¿Sabes porque ocurre esto?

    Lo dicho, muchas gracias por todo
    Un saludo :)

  2. 2 toni Feb 22nd, 2007 at 9:03 pm

    Hola Sergio, ninguna molestia. Ignoraba esto, lo hice con flas mx 2004 y claro ...

    La única solución que he encontrado (poco satisfactoria) es anular la propiedad autoSize y dar un tamaño de texto predeterminado al textField.

    Lo investigaremos.

    saludos

  3. 3 sergioelmoreno Feb 22nd, 2007 at 11:04 pm

    Gracias por responder :)

    Yo también me pondré a toquetear el código a ver si saco algo en claro.

    Un saludo
    :D

  4. 4 sergioelmoreno Feb 23rd, 2007 at 1:46 pm

    Hola Tony.
    Parece que he dado con una solución a el problema de adaptar html en campos de texto que leen de un xml en Flash 8.

    Primero pego el codigo del archivo xml:
    ----------------------------------------

    XML:
    1. <?xml version="1.0" encoding="utf-8"?>
    2.  
    3. <enlaces>
    4. <titulo>Mis enlaces favoritos</titulo>
    5.  
    6. <categoria>
    7. Cat:&nbsp;Blogs</categoria>
    8.  
    9. <lista>
    10.  <ul>
    11.  <li><a href="http://www.asfusion.com/blog/index.cfm?setlan=es" rel="nofollow">ASFusion</a></li>
    12.  <li><a href="http://www.carlosrovira.com/" rel="nofollow">Carlos Rovira</a></li>
    13.  <li><a href="http://www.code4net.com/" rel="nofollow">Code 4 Net</a></li>
    14.  <li><a href="http://www.cristalab.com/" rel="nofollow">Cristalab</a></li>
    15.  <li><a href="http://www.design-nation.net/es/" rel="nofollow">Design-nation</a></li>
    16.  <li><a href="http://www.elecash.org/blog/" rel="nofollow">Elecash</a></li>
    17.  <li><a href="http://www.10-lab.com/blog/" rel="nofollow">Flash Lab</a></li>
    18.  <li><a href="http://www.flashla.com/" rel="nofollow">Flashla</a></li>
    19.  <li><a href="http://blog.innocuo.com/" rel="nofollow">Innocuo</a></li>
    20.  <li><a href="http://www.kadazuro.com/blog/" rel="nofollow">Kadazuro</a></li>
    21.  <li><a href="http://klr20mg.com/" rel="nofollow">Krl20Mg</a></li>
    22.  <li><a href="http://www.nomaster.com" rel="nofollow">nomaster</a></li>
    23.  <li><a href="http://www.oscartrelles.com/es/" rel="nofollow">Oscar Trelles</a></li>
    24.  <li><a href="http://www.sidedev.net/blog/" rel="nofollow">SideDev</a></li>
    25.  <li><a href="http://x-flash.org/blog/index.html" rel="nofollow">X-Flash</a></li>
    26.  </ul>
    27.  </lista>
    28.  </enlaces>

    ---------------------------------------------------
    Como puedes observar el componente CDATA desaparece, ya que es innecesario (en el caso de mi archivo en concreto )

    En el archivo .fla he creado un textField en el que he marcado la casilla de permitir html en el campo de texto y le he introducido como nombre de vr: texto (tambien he nombrado con el mismo nombre al Campo de Texto)

    En una capa anexa he incluido el siguiente codigo en AS:
    ------------------------------------------------------

    Actionscript:
    1. var styles:TextField.StyleSheet = new TextField.StyleSheet();
    2. styles.setStyle("titulo", {
    3.     color:'#000000',
    4.     fontFamily:'Arial,Helvetica,sans-serif',
    5.     fontSize:'12',
    6.     display:'block'
    7. });
    8. styles.setStyle("a:hover", {
    9.     textDecoration:'underline'
    10. });

    -------------------------------------------------------

    Con este codigo le declaro a cada nodo del xml atributos CSS (en este caso concreto, solo a Titulo y a los links)
    seguimos con mas codigo:
    -------------------------------------------------------

    Actionscript:
    1. var my_xml:XML = new XML();
    2. my_xml.ignoreWhite = true;
    3. my_xml.onLoad = function(success:Boolean):Void {
    4.     if (success) {
    5.         texto.styleSheet = styles;
    6.         texto.htmlText = my_xml;
    7.     } else {
    8.         trace("Error loading XML.");
    9.     }
    10. };
    11. my_xml.load("mixml.xml");

    --------------------------------------------------------
    Con este codigo declaramos primero el xml (agragando la característica styleSheet) y despues lo cargamos en el textField correspondiente.
    Publicamos y funciona correctamente.
    (notese que los saltos de linea se han incluido en el xml mediante la etiqueta '' como si fuera un html.)

    Espero haber sido de ayuda.
    Si no esta muy claro así comentadmelo y lo clarifico un poco ^^

    Salud!!
    :)

  5. 5 Antonio Mar 9th, 2007 at 1:15 am

    y si quiero mostrar el mismo tipo de letra en este caso GillSans en el campo de texto dinamico, y que no cambie cuando lo habres en otra pc u otro navegador como I.E, Safari o Mozilla...por que a mi me paso con una galeria y al verla en otra pc o sorpresa otro tipo de texto...GRACIAS!!!

  6. 6 toni Mar 9th, 2007 at 6:43 am

    Tendrás que usar fuentes vinculadas, aqui un tutorial:

    http://www.after-hours.org/2004/08/11/embedfonts-con-texto-dinamico/

    saludos

  7. 7 maria paz Mar 20th, 2007 at 5:51 pm

    Hola,

    Estoy trabajando en un xml que cargo a flash. Todo va perfecto salvo un pequeño detalle: Tengo varias listas con su estilo pero cada vez que quiero poner la primera palabra en negrita con un me pone también el bullet en negrita. Alguna idea para que esto no ocurra??
    Tampoco estoy usando el CDATA..

    muxas gracias!

  8. 8 jd Jan 22nd, 2008 at 7:44 pm

    Que bueno, hace algun rato habia buscado como meter en el XML ese tipo de datos.

Leave a Reply




Subscribe

Subscribe to my RSS Feeds