Flash CS3: TextField.appendText ()

Saturday, December 15, 2007

Flash CS3 ima toliko stvarno novi, uključujući i "čudna" da naznačite kada je nekoliko savjeta o pisanju koda. To će se dogoditi, na primjer, kad smo se bave predmetima TextField Ja sam za dodavanje niza do kraja polja TextField klasični zapis:

Actionscript:
  1. ; mioTextField_txt. tekst + = ", dodao String";

Ali ovdje je ActionScript 3.0, kada završavanjem filma, osjećam (Upozorenje) - ili preporučiti:

Upozorenje: 3551: Dodavanje teksta na textfield po + = je često sporiji u usporedbi s korištenjem TextField.appendText ().

Fantastico! Let's pogledajte na činjenicu SYNOPSIS metoda appendText() kaže:

Stavlja Navedeni string iz parametra newText kraju teksta u odgovarajućem području. Ova metoda je efikasnija nego dodatak += primjenjuju se na imovinu text someTextField.text += moreText osobito u slučaju tekstualno polje s značajnu količinu sadržaja.

Mi vjerovati? Iz sigurnosnih provjera:

Actionscript:
  1. . getTimer ; uvoz flash. Utils. getTimer;
  2. ; var i: UINT = 0;
  3. = getTimer ( ) ; var s: int = getTimer ();
  4. i; i < 10000 ;i++ ) { for (i; i <10000; i + +) (
  5. ; text_txt. tekst + = "Pozdrav";
  6. )
  7. = getTimer ( ) ; var f: int = getTimer ();
  8. fs ) ; trag (FS);

Vrijeme: 9360 - na moj stroj, u 'debug' načinu rada. Neka zatim kao preporučene od strane prevodilac:

Actionscript:
  1. . getTimer ; uvoz flash. Utils. getTimer;
  2. ; var i: UINT = 0;
  3. = getTimer ( ) ; var s: int = getTimer ();
  4. i; i < 10000 ;i++ ) { for (i; i <10000; i + +) (
  5. "Ciao" ) ; text_txt. appendText ( "Hello");
  6. )
  7. = getTimer ( ) ; var f: int = getTimer ();
  8. fs ) ; trag (FS);

Vrijeme: 8415 ;)

Ništa izuzetne ... Međutim, to je točno! Metoda appendText() je brži i izvođenje pred-inkrementalno += Zašto? Najvažniji razlog je ocigledan: operatora += djela na bilo koju vrstu podataka. Također u ovom OO jezik operatora nije strukturiran kao u jednostavnim C, ali je "pokrivena". U C + +, na primjer, možete prebrisati (preko) operatera kao dio strukture objektno-jezik sebe. Na kraju appendText() je brži jer njegov cilj je da se "objesiti" niz i zato postoji mnogo "pitanja" u njoj. Operater += međutim, mora raditi za bilo koju vrstu podataka te stoga nije optimizirano za žice. U C, naprotiv, operator += nizak nivo i uvijek će biti brže nego poziv na funkciju.

Srodne post