Flash CS3: TextField.appendText ()

Sábado, 15 de diciembre de 2007

Flash CS3 tiene tantos realmente nuevo, incluida la "curiosidad" para indicar cuando el algunos consejos sobre cómo escribir código. Esto ocurre, por ejemplo, cuando se trata de objetos TextField Tengo que añadir una cadena al final de un campo TextField notación clásica:

Actionscript:
  1. ; mioTextField_txt. texto + = "agregó cadena";

Pero aquí el ActionScript 3.0, al terminar la película, me siento (de alerta) - o recomendar:

Advertencia: 3551: Agregar texto a un texto de + = es a menudo más lento en comparación con el método TextField.appendText ().

Fantastico! Veamos el hecho SINOPSIS método appendText() dice:

Agrega la cadena especificada desde el parámetro newText final del texto de la materia. Este método es más eficaz que una += se aplica a una propiedad text someTextField.text += moreText en particular en el caso un campo de texto con una cantidad significativa de contenido.

Confiamos? Para control de seguridad:

Actionscript:
  1. . getTimer ; importación 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. texto + = "Hola";
  6. )
  7. = getTimer ( ) ; var f: int = getTimer ();
  8. fs ) ; trace (fs);

Hora: 9360 - en mi máquina, en modo de depuración. Vamos entonces a lo recomendado por el compilador:

Actionscript:
  1. . getTimer ; importación 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 ( "Hola");
  6. )
  7. = getTimer ( ) ; var f: int = getTimer ();
  8. fs ) ; trace (fs);

Hora: 8415 ;)

Nada excepcional ... Sin embargo, es cierto! El método appendText() es más rápido y el rendimiento de las pre-incrementales += ¿Por qué? La razón más obvia es la siguiente: el operador += actúa en cualquier tipo de datos. Asimismo, en un lenguaje OO este operador no está estructurada como en el C simple, pero es "cubierto". En C + +, por ejemplo, puede sobrescribir (anular) el operador como parte de la estructura del lenguaje-objeto en sí. En última instancia appendText() es más rápido porque su objetivo es "colgar" una cadena y, por tanto, hay muchas "preguntas" en ella. El operador += deben trabajar para cualquier tipo de datos y, por tanto, no está optimizado para las cadenas. En C, por el contrario, el operador += es un bajo nivel y siempre será más rápido que una llamada a una función.

Post relacionados