Visualizzazione del testo

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

Benché strumenti di creazione come Adobe Flash Builder e Flash Professional forniscano diverse opzioni per la visualizzazione del testo, tra cui i componenti e gli strumenti di testo, il metodo più semplice per impostare a livello di codice la visualizzazione del testo è rappresentato dai campi di testo.

Tipi di testo

Il tipo di testo all'interno di un campo di testo è caratterizzato dalla propria origine:

  • Testo dinamico

    Il testo dinamico comprende i contenuti che vengono caricati da un'origine esterna, quale un file di testo, un file XML o un servizio Web remoto.

  • Testo di input

    Il testo di input è rappresentato dal testo immesso dall'utente o dal testo dinamico modificabile dall'utente. È possibile impostare un foglio di stile per la formattazione del testo di input oppure utilizzare la classe flash.text.TextFormat per assegnare delle proprietà al campo di testo per il contenuto di input. Per ulteriori informazioni, vedete la sezione Rilevamento dell'input di testo.

  • Testo statico

    Il testo statico viene creato solo mediante Flash Professional. Non è possibile creare un'istanza di testo statico utilizzando ActionScript 3.0. Tuttavia, è possibile utilizzare classi ActionScript come StaticText e TextSnapshot per manipolare un'istanza di testo preesistente. Per ulteriori informazioni, consultate Operazioni con il testo statico.

Modifica del contenuto di un campo di testo

Potete definire testo dinamico assegnando una stringa alla proprietà flash.text.TextField.text. È possibile assegnare una stringa direttamente alla proprietà, come segue:

myTextField.text = "Hello World";

Inoltre, alla proprietà text è possibile assegnare un valore tratto da una variabile definita nello script, come indicato nell'esempio seguente:

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
 
    public class TextWithImage extends Sprite 
    { 
        private var myTextBox:TextField = new TextField(); 
        private var myText:String = "Hello World"; 
 
        public function TextWithImage() 
        { 
            addChild(myTextBox); 
            myTextBox.text = myText; 
        } 
    } 
}

In alternativa, alla proprietà text è possibile assegnare un valore tratto da una variabile remota. Per caricare i valori di testo da origini remote sono disponibili tre opzioni:

  • Le classi flash.net.URLLoader e flash.net.URLRequest caricano le variabili per il testo da una posizione locale o remota.

  • L'attributo FlashVars è incorporato nella pagina HTML che include il file SWF e può contenere dei valori delle variabili di testo.

  • La classe flash.net.SharedObject gestisce la memorizzazione persistente dei valori. Per ulteriori informazioni, consultate Memorizzazione di dati locali.

Visualizzazione del testo HTML

La classe flash.text.TextField ha una proprietà htmlText che è possibile utilizzare per identificare la stringa di testo come stringa che contiene tag HTML per la formattazione del contenuto. Come nell'esempio seguente, è necessario assegnare il valore di tipo stringa alla htmlText (non alla proprietà text) affinché Flash Player o AIR esegua il rendering del testo come HTML:

var myText:String = "<p>This is <b>some</b> content to <i>render</i> as <u>HTML</u> text.</p>"; 
myTextBox.htmlText = myText;

Flash Player e AIR supportano un sottoinsieme di tag ed entità HTML per la proprietà htmlText. La descrizione della proprietà flash.text.TextField.htmlText nella Guida di riferimento di ActionScript 3.0 fornisce informazioni dettagliate sui tag e le entità HTML supportate.

Una volta designato il contenuto mediante la proprietà htmlText, è possibile utilizzare i fogli di stile o il tag textformat per gestire la formattazione del contenuto. Per ulteriori informazioni, consultate Formattazione di testo.

Uso delle immagini nei campi di testo

Un altro vantaggio della visualizzazione dei contenuti sotto forma di testo HTML consiste nel fatto che nel campo di testo è possibile includere delle immagini. È possibile fare riferimento a un'immagine (locale o remota) mediante il tag img e farla visualizzare all'interno del campo di testo associato.

L'esempio seguente crea un campo di testo di nome myTextBox e include un'immagine JPG di un occhio, memorizzata nella stessa directory del file SWF, all'interno del testo visualizzato:

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
 
    public class TextWithImage extends Sprite 
    { 
        private var myTextBox:TextField; 
        private var myText:String = "<p>This is <b>some</b> content to <i>test</i> and <i>see</i></p><p><img src='eye.jpg' width='20' height='20'></p><p>what can be rendered.</p><p>You should see an eye image and some <u>HTML</u> text.</p>"; 
 
        public function TextWithImage() 
        { 
            myTextBox.width = 200; 
            myTextBox.height = 200; 
            myTextBox.multiline = true; 
            myTextBox.wordWrap = true; 
            myTextBox.border = true; 
 
            addChild(myTextBox); 
            myTextBox.htmlText = myText; 
        } 
    } 
}

Il tag img supporta i file JPEG, GIF, PNG e SWF.

Scorrimento del testo in un campo di testo

In molti casi, il testo risulta più lungo del campo di testo che lo visualizza. In altri, un campo di immissione testo consente all'utente di immettere più testo di quello visualizzabile in una sola volta. Per gestire i contenuti particolarmente lunghi (sia in verticale che in orizzontale), è possibile utilizzare le proprietà relative allo scorrimento della classe flash.text.TextField.

Alcune delle proprietà relative allo scorrimento sono TextField.scrollV, TextField.scrollH e maxScrollV e maxScrollH. Utilizzarle per rispondere a eventi quali un clic del mouse o la pressione di un tasto della tastiera.

Nell'esempio seguente viene creato un campo di testo che ha una dimensione fissa e contiene più testo di quello che il campo è in grado di visualizzare in una sola volta. Quando l'utente fa clic sul campo di testo, il testo viene fatto scorrere in verticale.

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
    import flash.events.MouseEvent; 
 
    public class TextScrollExample extends Sprite 
    { 
        private var myTextBox:TextField = new TextField(); 
        private var myText:String = "Hello world and welcome to the show. It's really nice to meet you. Take your coat off and stay a while. OK, show is over. Hope you had fun. You can go home now. Don't forget to tip your waiter. There are mints in the bowl by the door. Thank you. Please come again."; 
 
        public function TextScrollExample() 
        { 
            myTextBox.text = myText; 
            myTextBox.width = 200; 
            myTextBox.height = 50; 
            myTextBox.multiline = true; 
            myTextBox.wordWrap = true; 
            myTextBox.background = true; 
            myTextBox.border = true; 
 
            var format:TextFormat = new TextFormat(); 
            format.font = "Verdana"; 
            format.color = 0xFF0000; 
            format.size = 10; 
 
            myTextBox.defaultTextFormat = format; 
            addChild(myTextBox); 
            myTextBox.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownScroll); 
        } 
 
        public function mouseDownScroll(event:MouseEvent):void 
        { 
            myTextBox.scrollV++; 
        } 
    } 
}