Aquí os dejo este típico efecto de máquina de escribir (typewriter effect) escrito en actionscript 2.o. La clase está suficiéntemente documentada como para poder utilizarla sin problemas. De todos modos, si tenéis algun problema, escribidme a alex_en_electroduendes.com


Que la disfrutéis! ;)

Éste es un ejemplo de su uso:

Actionscript:
  1.  
  2. // suponemos que tenemos un texfield cuya instancia se llama texto
  3. import com.electroduendes.efectos.text.ConstruirPorLetras;
  4. //ConstruirPorLetras(TextFieldInstancia,
  5. //                              velocidad,
  6. //                              numLetrasPorInsercion );
  7. var efecto:ConstruirPorLetras = new ConstruirPorLetras(texto, 50, 4);
  8. efecto.construir();
  9. //Para deconstruir:
  10. //efecto.deconstruir(100, 3);
  11.  

Actionscript:
  1.  
  2. /**
  3. * @revision Alejandro Sánchez electroduendes_en_gmail.com
  4. *
  5. * @since 26/09/2005
  6. */
  7. import mx.utils.Delegate;
  8. class com.electroduendes.efectos.text.ConstruirPorLetras {
  9.  
  10.         
  11.         private var ID:Number;
  12.        
  13.         private var campo:TextField;
  14.        
  15.         private var texto:String;
  16.  
  17.         private var velocidad : Number;
  18.  
  19.         private var tamagno : Number;
  20.        
  21.         private var i:Number;
  22.        
  23.         /**
  24.          * @usage Genera un estupendo efecto de aparición por palabras para textfields
  25.          *
  26.          * // suponemos que tenemos un texfield cuya instancia se llama texto
  27.          *  import com.electroduendes.efectos.text.ConstruirPorLetras;
  28.          *      var efecto:ConstruirPorLetras = new ConstruirPorLetras(test, 50, 4);
  29.          *  efecto.construir();
  30.         *  //Para deconstruir:
  31.          *  //efecto.deconstruir(100, 3);
  32.          * 
  33.          * @param velocidad : en caso de que no se enchufe, se incluirá el
  34.          * de por defecto, (100)
  35.          * @param tamagno el tamaño del decremento. ej: si le pasamos 2, irá deshaciendo el
  36.          * string de dos en dos.
  37.          */
  38.         function ConstruirPorLetras(miTextField:TextField, velocidad:Number, tamagno:Number){
  39.                 if(tamagno==undefined) tamagno = 1;
  40.                 if(velocidad==undefined) velocidad = 10;
  41.                 this.campo = miTextField;
  42.                 this.velocidad = velocidad;
  43.                 this.tamagno = tamagno;
  44.                 i = 0;
  45.                 texto= campo.text;
  46.         }
  47.        
  48.         /**
  49.          * Método que arranca la animación de aparición. El efecto no se
  50.          * empieza a ejecutar hasta que este método es invocado.
  51.          */
  52.         function construir() : Void {
  53.                 campo.text = "";       
  54.                 clearInterval(ID);
  55.                 ID = setInterval(Delegate.create(this,this._construir),velocidad);
  56.         }
  57.  
  58.         /**
  59.          * @usage deconstruye el texto que hay en el textfield con un efecto
  60.          * de mecanografía.
  61.          *
  62.          * import com.electroduendes.efectos.text.ConstruirPorLetras;
  63.          * var efecto:ConstruirPorLetras = new ConstruirPorLetras(test, 50, 4);
  64.          * efecto.deconstruir();
  65.          *
  66.          * @param velocidad opcional: en caso de que no se enchufe, se incluirá el
  67.          * que se haya pasado al constructor, o el de por defecto, (100)
  68.          * @param tamagno el tamaño del decremento. ej: si le pasamos 2, irá deshaciendo el
  69.          * string de dos en dos.
  70.          */
  71.         function deconstruir(velocidad:Number, tamagno:Number):Void{
  72.                 if(tamagno!=undefined) this.tamagno = tamagno;
  73.                 if(velocidad!=undefined) this.velocidad = velocidad;
  74.                 i = 0;
  75.                 clearInterval(ID);
  76.                 this.campo.text = texto;
  77.                 ID = setInterval(Delegate.create(this,_deconstruir),this.velocidad);
  78.         }
  79.                        
  80.         private function _construir():Void{
  81.                 var aux:Number = campo.length+tamagno;
  82.                 campo.text = texto.substr(0,aux);
  83.                 updateAfterEvent();
  84.                 if (campo.length>= texto.length)
  85.                 clearInterval(ID);
  86.         }
  87.        
  88.         private function _deconstruir():Void{
  89.                 var aux:Number = (i+=this.tamagno);
  90.                 trace(this.tamagno);
  91.                 campo.text = texto.substr(aux);
  92.                 updateAfterEvent();
  93.                 if(!campo.length) clearInterval(ID);
  94.         }
  95.        
  96.         public static function main() : Void {
  97.                 // para gente de FDT, mtasc y compañía :)
  98.                 var texto:TextField  = _root.createTextField("mitexto", 1, 100, 100, 100, 20);
  99.                 var efecto:ConstruirPorLetras = new ConstruirPorLetras(texto, 50, 4);
  100.                 efecto.construir();
  101.         }
  102. }