Flash CS3: TextField.appendText ()

Lørdag, 15. desember 2007

Flash CS3 har så mange virkelig nytt, inkludert "nysgjerrige" for å indikere når noen tips om å skrive kode. Dette skjer for eksempel når vi har å gjøre med gjenstander TextField Jeg må legge til en streng på slutten av et felt TextField med klassisk notasjon:

Actionscript:
  1. ; mioTextField_txt. tekst + = "lagt String";

Men her er ActionScript 3.0, når fullføre filmen, jeg føler (Advarsel) - eller anbefaler:

Advarsel: 3551: Legge til tekst i en TextField ved + = er ofte en langsommere sammenlignet med hjelp TextField.appendText ().

Fantastico! La oss se det faktum Synopsis metoden appendText() sier:

Legger til den angitte strengen fra parameteren newText slutten av teksten i det aktuelle feltet. Denne metoden er mer effektiv enn et tillegg += brukt på en eiendom text someTextField.text += moreText tilfeller et tekstfelt med en vesentlig mengde innhold.

Vi stoler på? For sikkerhets sjekk:

Actionscript:
  1. . getTimer ; import 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 + = "Hei";
  6. )
  7. = getTimer ( ) ; var f: int = getTimer ();
  8. fs ) ; Trace (fs);

Tid: 9360 - på min maskin, i debug-modus. La deretter som anbefales av kompilatoren:

Actionscript:
  1. . getTimer ; import 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 ( "Hei");
  6. )
  7. = getTimer ( ) ; var f: int = getTimer ();
  8. fs ) ; Trace (fs);

Tid: 8415 ;)

Ingenting eksepsjonelt ... Men det er sant! Metoden appendText() er raskere og ytelsen til pre-inkrementelle += Hvorfor? Den mest åpenbare grunnen er: operatør += fungerer på alle typer data. Også i et OO språk denne operatøren er ikke strukturert som i enkle C, men er "dekket". I C + +, for eksempel, kan du overskrive (overstyre) operatøren som del av strukturen av objektorienterte språk selv. I siste instans appendText() er raskere fordi målet er å "henge" en streng, og derfor er det mange "spørsmål" i den. Operatøren += må fungere for alle typer data, og derfor ikke optimalisert for strenger. I C, tvert imot, operatøren += er et lavt nivå og vil alltid være raskere enn en samtale til en funksjon.

Related Post