Lavorare con i campi di testo in Actionscript 3.0
(scritto da , il giorno 07-03-2008 01:38)
Lavorare con il testo in Actionscript 3, significa fondamentalmente utilizzare la classe TextField. Ad esso associamoci poi la possibilità di impostare il testo (colore, font, ecc..) a nostro piacimento tramite la classe TextFormat. Sia in Flash CS3 che in Flex 3 possiamo creare istanze di componenti (TextArea, Text, ecc..) oppure generare aree di testo in maniera dinamica.
Lavorare con il testo in Actionscript 3, significa fondamentalmente utilizzare la classe TextField.
Ad esso associamoci poi la possibilità di impostare il testo (colore, font, ecc..) a nostro piacimento tramite la classe TextFormat. Sia in Flash CS3 che in Flex 3 possiamo creare istanze di componenti (TextArea, Text, ecc..) oppure generare aree di testo in maniera dinamica.
Il contenuto di un singolo campo di testo può essere ovviamente caricato da file esterno (come risultato ad esempio di una elaborazione da database da parte di un linguaggio server-side) o da un file di variabili, oppure da un file XML.
Essendo fondamentalmente un linguaggio di programmazione, Actionscript mette a disposizione non solo semplici campi di testo ma anche "testi di input" all'interno del quale l'utente può scrivere ed Actionscript lavorare l'informazione in esso contenuta. Pensiamo ad un semplice modulo di accesso tramite password e username.
Nell'accezione più semplice della questione, possiamo dire che se in Flash CS3 abbiamo le istanze del campo di testo "dinamico" (uno dei 3 tipi di testo insieme a "statico" e "input"), in Adobe Flex 3 abbiamo invece il componente "Label", come elemento più semplice per l'inseriemnto di testi all'interno di un lavoro creato appunto con Flex Builder. Insieme alla "label" abbiamo anche altri componenti: TextArea e TextInput, di simile utilizzo.
Entrabe le forme di "campi di testo" sfruttano quindi la classe TextField, che tra le sue proprietà annovera appunto la "text". Tramite questa proprietà noi possiamo scrivere in un campo di testo , o label, oppure riprenderne il valore in esso contenuto.
Questo significa che data un'istanza di una label o di un campo di testo dinamico avremo queste due opzioni:
Flex 3
<mx:Label name="label_txt" text="Hello World!"/>
Flash CS3
var label_txt:TextField=new TextField(); addChild(label_txt); label_txt.text="Hello World!";
Ovviamente nell'esempio per Flash CS3 abbiamo creato un campo di testo in maniera dinamica, mentre nel primo abbiamo solo inserito un componente Label e ne abbiamo impostato la proprietà text.
Il risultato però alla fine non ci cambia di molto: per scrivere usiamo la proprietà "text".
Scrivere del testo in applicazioni Web o Desktop potrebbe tuttavia comportare alcune variazioni importanti: ad esempio dover usare il grassetto. Oppure il corsivo, o altro ancora.
In questo caso a venirci in contro è niente di meno che l'HTML. Possiamo infatti sfruttare i tag dell'HTML per formattare, almeno in minima parte, il contenuto di un campo di testo. Utilizzeremo quindi il tag "b" per il grassetto, "i" per il corsivo, "br" per l'a capo, ecc.. .
NOTA: Ovviamente non tutti i tag sono supportati. Fanno parte dell'elenco di quelli sfruttabili anche tag come: font e img.
In aggiunta a questo, va ricordato che il Flash Player renderizza anche i CSS interni che esterni, tuttavia questo (i CSS) sarà studio di un successivo articolo. Pertanto tralasceremo l'argoemtno per trattarlo più completamente in un successivo articolo.
Certo, l'uso dell'HTML per la formattazione è una soluzione. Non "la" soluzione. Se non altro pratica nel suo utilizzo.
Non consideriamo in questo caso la classe TextFormat, usata invece per gestire le caratteristiche del testo nel suo complesso.
In base a quanto detto quindi, per scrivere del testo, impostato orientativamente con l'HTML, dobbiamo usare un'altra proprietà rispetto a quella precedente: non più "text" bensì "htmlText".
Flex 3:
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init()"> <mx:Script> <![CDATA[ public var label_txt:TextField=new TextField(); public function init():void { label_txt.htmlText="<b>Testo</b> <i>in prova</i>"; stage.addChild(label_txt); } ]]> </mx:Script> </mx:WindowedApplication>
Flash CS3
var label_txt:TextField=new TextField(); addChild(label_txt); label_txt.htmlText="<b>Testo</b> <i>in prova</i>";
Come potete notare gli script sono pressapoco identici. Ovviamente il codice di Flex è leggermente più ampio perchè comprende delle parti in più che tuttavia non riguardano direttamente Actionscript 3.
La sostanza tuttavia rimane la stessa.
Apriamo però una piccola nota di merito riguardo al contenuto da inserire all'interno di un campo di testo. Ovviamente l'istanza TextField accetta solo contenuto di tipo "String". Non a caso il contenuto di un campo di testo è incluso tra " ".
In programmazione, come saprete, fa differenza scrivere "9" che è un valore di tipo "string" e 9 che è un valore di tipo "int".
Questo non significa che non possiamo inserire al suo interno valori numerici o derivati da altro tipo di variabile.
Semplicemente dobbiamo convertire il contenuto in formato "String", così:
[
code]
var mioTesto:TextField=new TextField();
var dataGiorno:Date=new Date();
addChild(mioTesto);
mioTesto.text=String(dataGiorno.getTime());
[/code]
Così facendo infatti ovviamo il problema del tipo di dato da inserire e quello accettato dai campi di testo.
Come dicevamo precedentemente, possiamo anche formattare il testo. Possiamo, cioè, impostare il colore, il tipo di font, ecc..
var mioTesto:TextField=new TextField(); addChild(mioTesto); mioTesto.text="Hello World!"; var myFormat:TextFormat=new TextFormat(); myFormat.font="Verdana"; myFormat.size=15; mioTesto.setTextFormat(myFormat);
Provando, vedrete che ora il font e la dimensione del testo sono quelle indicate dall'istanza TextFormat.
Commenti (0)
Registrati ed esegui il login se vuoi lasciare un commento
Scarica o stampa l'articolo "Lavorare con i campi di testo in Actionscript 3.0" in formato PDF
Torna indietro









