No sabía que el ejemplo que te había pasado estaba hecho de esa manera, me parece muy complicado tener todos los caracteres separados en diferentes campos de texto para poder lograr ese efecto, aparte de ocurrir lo que dices que se demora, porque hasta que no encuentra la letra no sigue.
He construido un prototype, quizás no este lo suficientemente optimizado, porque está hecho a la carrera pero creo que te servirá:
Código ActionScript :
//---Prototype de rellenar el texto
TextField.prototype.fillRandomText = function(theText:String, cantidad:Number, veces:Number):Void{
//---Decalaración de variable
var txt:TextField = this;
var secFin:Number = 0;
var rand:String;
var sum:Number = 0;
var avance:Number = 0;
//---Funcuión de crear caracteres aleatorios
var randomChar:Function = function (numero:Number):String{
var sum:Number = 0;
var rand:Number;
var randChar:String;
var chars:String = "";
while(sum < numero){
rand = Math.round(Math.random() * 94 + 33);
randChar = String.fromCharCode(rand);
chars += randChar;
sum++;
}
return chars;
}
//---Función de rellenar
var fillChars:Function = function():Void{
//---Asignar el texto
rand = theText.slice(0, secFin) + randomChar(avance - secFin);
txt.text = rand;
//---Detener el intervalo
if(secFin >= theText.length){
clearInterval(intervalo);
}
avance += (avance < theText.length) ? cantidad : 0;
sum++;
if(sum == veces){
sum = 0;
secFin += cantidad;
}
}
//---Hacer el setInterval
var intervalo:Number = setInterval(fillChars, 10);
}
Ahora imagina que tengas en la escena un TextField con nombre de instancia "campo", la manera de utilizar el proto es la siguiente:
Código ActionScript :
//---Llamar a la función
campo.fillRandomText("Prueba de texto aleatorio", 1, 5);
Y el TextField se rellenará con el texto "Prueba de texto aleatorio"
(Primer parámetro), utilizando 5 caracteres aleatorios para cada espacio del texto y después que pasen estos 5 pone el caracter que le corresponde
(Tercer parámetro) y avanzando de una letra en una letra
(Segundo parámetro);
Espero que te sirva.