Flash CS3: TextField.appendText()
Sabato 15 Dicembre, 2007Flash CS3 ha davvero tante novità , tra cui quella "curiosa" di indicare al momento della compilazione alcuni consigli sulla scrittura del codice. Questo accade, ad esempio, quando abbiamo a che fare con gli oggetti TextField. Mi è capitato di dover aggiungere una stringa alla fine di un campo TextField, con la classica notazione:
-
mioTextField_txt.text += "Stringa aggiunta";
Ma ecco che ActionScript 3.0, al momento di compilare il filmato, mi avverte (Warning) - o consiglia:
Warning: 3551: L'aggiunta di testo a un'istanza TextField mediante += è spesso un'operazione più lenta rispetto all'uso del metodo TextField.appendText().
Fantastico! Andiamo a vedere infatti la SYNOPSIS del metodo appendText() che effettivamente dice:
Aggiunge la stringa specificata dal parametro
newTextalla fine del testo del relativo campo. Questo metodo è più efficiente rispetto a un'assegnazione addizione (+=) applicata a una proprietÃtext(ad esempiosomeTextField.text += moreText), in particolare nel caso di un campo di testo con una quantità di contenuto significativa.
Ci fidiamo? Per sicurezza verifichiamo:
-
import flash.utils.getTimer;
-
-
var i:uint=0;
-
var s:int = getTimer();
-
for(i; i <10000;i++) {
-
text_txt.text += "Ciao";
-
}
-
var f:int = getTimer();
-
trace(f-s);
Tempo: 9360 - sulla mia macchina, in debug mode. Proviamo allora come consigliato dal compilatore:
-
import flash.utils.getTimer;
-
-
var i:uint=0;
-
var s:int = getTimer();
-
for(i; i <10000;i++) {
-
text_txt.appendText ("Ciao");
-
}
-
var f:int = getTimer();
-
trace(f-s);
Tempo: 8415
Niente di eccezionale... tuttavia è vero! Il metodo appendText() è più rapido e performante dell'operatore pre-incrementale (+=). Come mai? Il motivo più ovvio è il seguente: l'operatore (+=) agisce su qualsiasi tipo di dato. Inoltre in un linguaggio OO questo operatore non è strutturato come nel semplice C ma è "oggettato". In C++, ad esempio, è possibile sovrascrivere (override) tale operatore in quanto facente parte della struttura ad oggetti del linguaggio stesso. In definitiva appendText() è più rapido in quanto il suo obiettivo è quello di "appendere" una stringa e di conseguenza non si fa tante "domande" al suo interno. L'operatore (+=), invece, deve funzionare per qualsiasi tipo di dato e quindi non è ottimizzato per le stringhe. In C, al contrario, l'operatore (+=) è una funzione a basso livello e sarà sempre più rapida di una chiamata ad una funzione.
Vedi anche...
- 03.09.08: Actionscript 3.0 for beginners: lesson #2 (0)
- 31.08.08: jQuery restyling (0)
- 28.08.08: WP-ABS: aggiornamento release 1.1 (3)
- 27.08.08: Very short snippet: inviare email in HTML con PHP (0)
- 26.08.08: Skypemote.com: dillo con le emotions (4)

















