Efecto de texto máquina de escribir.

Un clásico, el efecto de texto que se escribe letra por letra. Idóneo para entender la estructura básicas de una clase de as2.

Typewriter.as

Actionscript:
  1. import mx.utils.Delegate;
  2. class Typewriter  {
  3.     private var interval:Number;
  4.     private var string:String;
  5.     private var speed:Number;
  6.     private var textfield:TextField;
  7.     private var index:Number;
  8.     public function Typewriter (textfield:TextField, string:String, speed:Number) {
  9.         this.textfield = textfield;
  10.         this.string = string;
  11.         this.speed = speed;
  12.         index = 0;
  13.         interval = setInterval(Delegate.create(this, exec), this.speed);
  14.     }
  15.     private function exec() {
  16.         this.textfield.text = this.string.substr(0, index);
  17.         index++;
  18.         if (index> this.string.length) {
  19.             clearInterval(interval);
  20.         }
  21.     }
  22. }

Modo de uso
Para utilizar la clase, basta con utilizar el constructor new pasando como argumentos los siguientes parámetros:

  • Nombre de instancia de un campo de texto
  • Nombre de una cadena
  • Velocidad
Actionscript:
  1. var tpw:Typewriter = new Typewriter(mytext, mystring, 20);

Ejemplo de uso

En este ejemplo, se crea un campo de texto dinámicamente al que se le da un formato de texto.

Actionscript:
  1. mystring = "Lorem ipsum dolor sit amet, orci at, feugiat nonummy.";
  2. // --
  3. var myformat:TextFormat = new TextFormat();
  4. myformat.font = 'Verdana';
  5. myformat.size = 10;
  6. myformat.align = 'justify';
  7. // --
  8. _root.createTextField("mytext", 1, 20, 20, 460, 200);
  9. mytext.multiline = true;
  10. mytext.wordWrap = true;
  11. mytext.setNewTextFormat(myformat);
  12. // --
  13. var tpw:Typewriter = new Typewriter(mytext, mystring, 20);

Descarga Typewriter.zip

Typewriter.zip se ha descargado 3,197 veces.

6 Votes | Average: 3 out of 56 Votes | Average: 3 out of 56 Votes | Average: 3 out of 56 Votes | Average: 3 out of 56 Votes | Average: 3 out of 5 (6 votos, promedio: 3 sobre 5)
Loading ... Loading ...

14 Responses to “Efecto de texto máquina de escribir.”


  1. 1 Fco. Moreno Jan 2nd, 2007 at 4:08 pm

    Excelente Toni, y excelente el nuevo Blog, espero que esta nueva etapa sea fruto de muchos y nuevos éxitos. Te deseo lo mejor.
    Abrazos

  2. 2 Diego Jan 3rd, 2007 at 12:15 pm

    Hola Tony, felicidades por el nuevo blog.

    Estoy empezando ahora un poco con el tema de las clases y no entiendo alguna cosilla, asi que si alquien puede ayudarme....
    En esta linea:

    interval = setInterval(Delegate.create(this, exec), this.speed);

    No entiendo muy bien lo que hace Delegate.

    Muchas gracias de antemano y saludos a todos/as....

  3. 3 toni Jan 3rd, 2007 at 12:34 pm

    Hola Diego,

    Este quizá no es el mejor ejemplo para entender la utilidad de Delegate, ya que podía haber escrito perfectamente:

    interval = setInterval(this, 'exec', this.speed);

    Y funcionaría igual.

    Zárate escribió un articulo esclarecedor sobre el tema:

    http://www.zarate.tv/articulos/delegando-que-es-gerundio/

    saludos

  4. 4 Hardface Jan 5th, 2007 at 6:09 pm

    Guai!

    Es curioso ver como si pones el textField aliniado 'left' o 'right' va mucho más rápido, por lo menos en player de mac.

  5. 5 Fabián Jan 12th, 2007 at 3:47 pm

    Toni:
    ¿Sería posible que la cadena de texto no estuviera en el interior del flash sino en el html?
    La idea sería que con un único archivo swf se pudiera presentar cualquier texto corto con efecto de máquina de escribir.
    Me interesaría especialmente para un Flash MX 2004.
    Gracias

  6. 6 toni Jan 12th, 2007 at 6:06 pm

    Hola Fabian, tienes diferentes opciones puede que alguna se adapte a tus necesidades:

    1. Con flashvars, puedes pasar parámetros desde html a flash, claro que esto solo te sirve cuando cargas la película de flash.

    2. Con externalInterface puedes establacer una comunicación fuida entre flash y javascript, en el blog hay un ejemplo (flashtracer)

    3. Para mi la mejor opción, sería utilizar un archivo externo a flash (.txt o .xml) que contendría los textos.

    saludos.

  7. 7 sergioelmoreno Feb 16th, 2007 at 1:24 pm

    Hola, una pregunta simple:

    ¿Es posible incluir en el string etiquetas html? (saltos de linea, negritas o enlaces?)
    He probado a incluir antes de declarar el string lo siguiente
    mystring.html = true;
    en la caja de texto (he dibujado una a mano) está marcada la opcion de admitir etiquetas html y dentro del texto las etiquetas en el siguiente formato : '<br>'
    pero no me funciona.

    Gracias de todas formas por este magnifico tutorial
    Un saludo
    :)

  8. 8 toni Feb 17th, 2007 at 6:52 am

    Tambien tienes que modificar la clase para que te admita el salto de línea:

    Abre el archivo Typewriter.as y modifica el método exec como sigue

    Actionscript:
    1. private function exec() {
    2.         this.textfield.html = true;
    3.         this.textfield.htmlText = this.string.substr(0, index);
    4.         index  ;
    5.         if (index> this.string.length) {
    6.             clearInterval(interval);
    7.         }
    8.     }

    Saludos

  9. 9 sergioelmoreno Feb 17th, 2007 at 8:37 am

    Gracias Toni, ahora funciona perfecto!

    Un saludo
    :)

  10. 10 edgardo Mar 20th, 2007 at 4:47 am

    muy buen efecto!
    me preguntaba si no hay forma de detener el tipeo, ya que quiero que cada vez que el mouse esté sobre un botón tipee una leyenda diferente. He probado, y si no se termina de escribir la leyenda anterior parece sobreescribirse la nueva sobre ella.

  11. 11 toni Mar 20th, 2007 at 1:23 pm

    Hola edgardo,

    tendría que modificar la clase y añadir un método que pare el tipeo. La modifico y lo pongo en el blog.

    saludos

  12. 12 paco Apr 25th, 2007 at 1:26 pm

    Gracias, muy buen tutorial. Por cierto, ¿habría alguna manera de cambiar el color del texto?

  13. 13 pilottand May 14th, 2007 at 12:30 pm

    Hola

    Quería saber como puedo hacer para colocarle el sonido de la máquina

    gracias

  1. 1 Trucos destacados en otros blogs at Flash tips Pingback on Jan 4th, 2007 at 10:32 am

Leave a Reply




Subscribe

Subscribe to my RSS Feeds