
Etiquetas: StyleSheet parseCSS styleSheet htmlText
Los campos de texto en flash pueden contener texto simple o texto en formato HTML. El texto en formato HTML se almacena en la propiedad htmlText. Sobre los campos con texto HTML podemos aplicar hojas de estilo CSS, creadas en el código de la aplicación o cargadas en tiempo de ejecución.
En este ejemplo vamos a ver como cargar un archivo css, y aplicar estos CSS a un TextField que contiene un teto HTML. La hoja de estilos que vamos a utilizar, es esta:
h1 {font-family: Times New Roman, Times, _serif;
font-size: 30;
font-weight: bold;
} h2 {font-family: Arial, Helvetica, _sans;
font-size: 24;
} p{font-size: 15;
} a{color: #009900;
}a:hover{
color: #00ff00;
}Lo primero que tenemos que hacer, es cargar la hoja de estilos. Para ello, utilizamos una instancia de Loader:
cargador = new URLLoader();
cargador.addEventListener(Event.COMPLETE, onCSSFileLoaded);
cargador.load(new URLRequest("http://www.esedeerre.com/ejemplos/as3/css/ejemplo.css"));
Una vez cargado el archivo, salta el evento COMPLETE, y creamos una instancia de StyleSheet, parseamos el CSS cargado, y se lo aplicamos al campo de texto. Después de aplicar el CSS al campo de texto, podemos rellenar el campo con el texto HTML que queramos:
public function onCSSFileLoaded(event:Event):void
{var sheet:StyleSheet = new StyleSheet();
sheet.parseCSS(cargador.data);
campo.styleSheet = sheet; campo.htmlText = texto; }El código completo, y el ejemplo en Flash, tras el salto.
package
{import flash.display.MovieClip;
import flash.net.URLRequest;
import flash.events.Event;
import flash.net.URLLoader;
import flash.text.*;
public class EjemploCSS extends MovieClip
{ var cargador:URLLoader;var campo:TextField;
var texto:String = "<h1>Esto es una cabecera h1</h1></br>" +
"<h2>Esto es una cabecera h2</h2></br>" + "<p>Este es el contenido donde vamos a meter varios enlaces:</p>" + "<p><a href='http://www.google.com'>Google</a></p>" + "<p><a href='http://www.yahoo.com'>Yahoo</a></p>" + "<p><a href='http://www.altavista.com'>Altavista</a></p>"public function EjemploCSS():void
{campo = new TextField();
campo.width = 300;
campo.multiline = true;
campo.autoSize = TextFieldAutoSize.LEFT;
campo.selectable = false;
addChild(campo);
cargador = new URLLoader();
cargador.addEventListener(Event.COMPLETE, onCSSFileLoaded);
cargador.load(new URLRequest("http://www.esedeerre.com/ejemplos/as3/css/ejemplo.css"));
}public function onCSSFileLoaded(event:Event):void
{var sheet:StyleSheet = new StyleSheet();
sheet.parseCSS(cargador.data);
campo.styleSheet = sheet; campo.htmlText = texto; } }}
, es decir:
holaque tal estás?
pretendiendo en la misma linea poner solo el "que" en rojo, obtengo en el swf: hola que tal estas? ¿Se puede evitar?. GRACIAS.