miércoles, 25 de abril de 2012

Programando VII – ActionScript 3: Texto en pantalla

Esta vez vamos a poner textos en pantalla sin tener que recurrir a la típica salida estándar y, para ello vamos a tener que importarnos un par de librerías que son las que se encargan de los objetos TextField (campo de texto) y TextFormat (formato del texto). Son las siguientes:

flash.text.TextField; 
flash.text.TextFromat;

Vale, ¿y que es eso de las librerías o paquetes? Pues nada, que resulta que los señores que crearon AS se entretuvieron en hacer una serie de clases y funciones con las que tratar cosas de forma óptima, como el texto, para hacernos la vida más sencilla. (Fijate que majetes).

Para importar estas librerías se usa la sentencia import, quedando en este caso:

import flash.text.TextField; 
import flash.text.TextFormat; 

Esto se pone en las primeras lineas de código, antes de nada y nos importa lo que necesitamos (Que si, que ya explicaremos lo que son los objetos y clases) para que podamos usarlos en nuestro código a partir de ahora.

Creando un campo de texto:

Se hace mediante la instanciación de un objeto de tipo TextField (Instanciación es como la copia, más o menos) o para que nos entendamos mejor, con la siguiente sentencia:

var nombreVariable:TextField = new TextField(); 

A nombreVariable podemos darle el nombre que queramos, pero lo demás es fijo, ya que estamos refiriendonos, como ya hemos dicho, la clase TextField y creando un objeto nuevo mediante el operador new. ¿Qué ocurre ahora? Pues que TextField tiene una serie de propiedades o variables internas ya definidas a las que podemos acceder para cambiar, por ejemplo, su posición en pantalla o el texto que va a escribir.

¿Y como lo vemos en pantalla?

Usando addChild(nombreVariable)

Esta orden añade a nuestro ”stage” o pantalla principal el objeto TextField que acabamos de crear. Pero bueno, también es una sentencia que necesitará más explicación. De momento hay que quedarse con que añade a la pantalla lo que le indiquemos entre parentesis.

¿Y que pasa con TextFormat?

Pues que es una clase (si, que si, explicaré que es eso más adelante) que funciona conjuntamente con TextField para dar un formato al texto y poder elegir su alineación, tipo de fuente, altura, anchura, si tiene borde… Es decir, que añade funcionalidades a través de nuevas variables y metodos internos.

Vamos a ver un programilla que saca un texto sin formato y otro con él:

import flash.text.TextField; 
import flash.text.TextFormat; 
var texto:TextField = new TextField(); 
texto.text="Hola de nuevo!"; 
addChild(texto); // Para imprimir el texto en la pantalla. 
texto.x=100; 
texto.y=150; 

// Ahora sacaremos el texto con formato 
var textoFormateado:TextFormat = new new TextFormat("Arial",24,0x0033FF,true);
// El true es para negrita y 0x0033FF es azul en hexadecimal 

var texto2:TextField = new TextField(); 
texto2.defaultTextFormat=textoFormateado;

 // Ahora asociamos el formato a nuestro texto anterior 
texto2.text="Con formato!"; 
texto2.width=400; 
texto2.x=200; 
texto2.y=250; 
addChild(texto2); 

Como vemos texto, saca la frase “Hola de nuevo!” con el tipo por defecto y texto2, tiene un tipo de letra, tamaño y color distinto, ya que le pasamos entre parentesis el formato a su constructor (errr… si, esto también tengo que explicarlo, si, lo se), aunque podriamos acceder a sus variables internas fuera del parentesis, usando el nombre (en este caso textoFormateado) el operador punto y su propiedad a la que añadiremos el valor deseado.

La salida del programa por lo tanto sería:


 
Donde ya vamos viendo cositas más “gráficas” que nuestros futuros juegos van a necesitar para funcionar.

Hasta la próxima!

No hay comentarios:

Publicar un comentario