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:
[as]
// suponemos que tenemos un texfield cuya instancia se llama texto
import com.electroduendes.efectos.text.ConstruirPorLetras;
//ConstruirPorLetras(TextFieldInstancia,
// velocidad,
// numLetrasPorInsercion );
var efecto:ConstruirPorLetras = new ConstruirPorLetras(texto, 50, 4);
efecto.construir();
//Para deconstruir:
//efecto.deconstruir(100, 3);[/as]

[as]
/**
* @revision Alejandro Sánchez electroduendes_en_gmail.com
*
* @since 26/09/2005
*/
import mx.utils.Delegate;
class com.electroduendes.efectos.text.ConstruirPorLetras {

private var ID:Number;

private var campo:TextField;

private var texto:String;

private var velocidad : Number;

private var tamagno : Number;

private var i:Number;

/**
* @usage Genera un estupendo efecto de aparición por palabras para textfields
*
* // suponemos que tenemos un texfield cuya instancia se llama texto
* import com.electroduendes.efectos.text.ConstruirPorLetras;
* var efecto:ConstruirPorLetras = new ConstruirPorLetras(test, 50, 4);
* efecto.construir();
* //Para deconstruir:
* //efecto.deconstruir(100, 3);
*
* @param velocidad : en caso de que no se enchufe, se incluirá el
* de por defecto, (100)
* @param tamagno el tamaño del decremento. ej: si le pasamos 2, irá deshaciendo el
* string de dos en dos.
*/
function ConstruirPorLetras(miTextField:TextField, velocidad:Number, tamagno:Number){
if(tamagno==undefined) tamagno = 1;
if(velocidad==undefined) velocidad = 10;
this.campo = miTextField;
this.velocidad = velocidad;
this.tamagno = tamagno;
i = 0;
texto= campo.text;
}

/**
* Método que arranca la animación de aparición. El efecto no se
* empieza a ejecutar hasta que este método es invocado.
*/
function construir() : Void {
campo.text = «»;
clearInterval(ID);
ID = setInterval(Delegate.create(this,this._construir),velocidad);
}

/**
* @usage deconstruye el texto que hay en el textfield con un efecto
* de mecanografía.
*
* import com.electroduendes.efectos.text.ConstruirPorLetras;
* var efecto:ConstruirPorLetras = new ConstruirPorLetras(test, 50, 4);
* efecto.deconstruir();
*
* @param velocidad opcional: en caso de que no se enchufe, se incluirá el
* que se haya pasado al constructor, o el de por defecto, (100)
* @param tamagno el tamaño del decremento. ej: si le pasamos 2, irá deshaciendo el
* string de dos en dos.
*/
function deconstruir(velocidad:Number, tamagno:Number):Void{
if(tamagno!=undefined) this.tamagno = tamagno;
if(velocidad!=undefined) this.velocidad = velocidad;
i = 0;
clearInterval(ID);
this.campo.text = texto;
ID = setInterval(Delegate.create(this,_deconstruir),this.velocidad);
}

private function _construir():Void{
var aux:Number = campo.length+tamagno;
campo.text = texto.substr(0,aux);
updateAfterEvent();
if (campo.length >= texto.length)
clearInterval(ID);
}

private function _deconstruir():Void{
var aux:Number = (i+=this.tamagno);
trace(this.tamagno);
campo.text = texto.substr(aux);
updateAfterEvent();
if(!campo.length) clearInterval(ID);
}

public static function main() : Void {
// para gente de FDT, mtasc y compañía 🙂
var texto:TextField = _root.createTextField(«mitexto», 1, 100, 100, 100, 20);
var efecto:ConstruirPorLetras = new ConstruirPorLetras(texto, 50, 4);
efecto.construir();
}
}[/as]