Flash CS3: TextField.appendText ()

Flash CS3 a de très nombreuses innovations, y compris les «curieux» pour indiquer au moment de la compilation quelques conseils sur l'écriture de code. Cela arrive, par exemple, lorsque nous traitons avec des objets TextField . J'ai dû ajouter une chaîne à la fin d'un champ TextField avec la notation classique:

1
+ = "Stringa aggiunta" ; . mioTextField_txt texte + = "chaîne en ajoutant";

Mais c'est ici que ActionScript 3.0, lorsque vous remplissez le film, je me suis senti (Avertissement) - ou recommandés:

Attention: 3551: Ajout de texte à un TextField avec + = est beaucoup plus lent que d'utiliser la méthode TextField.appendText ().

Cool! Voyons le fait de la méthode SYNOPSIS appendText() dit en réalité:

) applicata a una proprietà text (ad esempio <strong>someTextField.text += moreText</strong> ), in particolare nel caso di un campo di testo con una quantità di contenuto significativa. Ajoute la chaîne spécifiée par newText à l'extrémité du champ de texte. Cette méthode est plus efficace qu'un affectation d'addition ( += ) propriétés appliquées à un text (par exemple <strong>someTextField.text += moreText</strong> ), en particulier dans le cas d'un champ de texte avec une quantité importante de contenu.

Nous faire confiance? Pour vérifier la sécurité:

1
2
3
4
5
6
7
8
9
. getTimer ; les importations flash.utils getTimer.;

uint = 0 ; var i: uint = 0;
int = getTimer ( ) ; var s: int = getTimer ();
i ; i < 10000 ; i ++ ) { pour (i, i <10000; i + +) {
+ = "Ciao" ; text_txt + texte = "Bonjour".;
}
int = getTimer ( ) ; var f: int = getTimer ();
f - s ) ; trace (f - s);

Heure: 9360 - sur ma machine en mode debug. Essayons comme conseillé par le compilateur:

1
2
3
4
5
6
7
8
9
. getTimer ; les importations flash.utils getTimer.;

uint = 0 ; var i: uint = 0;
int = getTimer ( ) ; var s: int = getTimer ();
i ; i < 10000 ; i ++ ) { pour (i, i <10000; i + +) {
( "Ciao" ) ; . text_txt appendText ("Bonjour");
}
int = getTimer ( ) ; var f: int = getTimer ();
f - s ) ; trace (f - s);

Heure: 8415 ;)

Rien d'exceptionnel ... mais c'est vrai! ). La méthode appendText() est plus rapide et plus puissant pré-incrémentale de l'opérateur ( += ). Pourquoi? La raison la plus évidente est la suivante: l'opérateur ( += ) fonctionne sur n'importe quel type de données. Par ailleurs, dans un langage OO cet opérateur n'est pas structuré comme en C, mais est simplement un «objet». En C + +, par exemple, vous pouvez écraser (remplacer) l'exploitant dans le cadre de la structure de la langue objet lui-même. Finalement appendText() est plus rapide parce que son but est de "bloquer" une chaîne et donc ne fait pas beaucoup de "questions" en elle. L'opérateur ( += ), cependant, devrait fonctionner pour tout type de données et n'est donc pas optimisée pour les cordes. En C, au contraire, l'opérateur ( += ) est une fonction de bas niveau et sera toujours plus rapide qu'un appel à une fonction.

Il n'y a aucun commentaire pour cet article

Laisser un commentaire

XHTML TAG PERMIS: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CODE D'INSERTION:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL