aluuura, è un po' grezzo perchè manca di alcuni controlli che lo renderebbero indipendente al 100% come effetto... ma la base c'è
codice:
function onEndEffect() {
trace("finito");
}
function returnLetter(array:Array):String {
var rand = Math.floor(Math.random()*array.length);
var actual = array[rand];
array.splice(rand, 1);
return actual;
}
function initializeVariable():Array {
var letters:String = new String("abcdefghjkilmnopqrstuvwxyzABCDEFGHJKILMNOPQRSTUVWXYZàèéìòù ,.-;:_|!\"£$%&/()=?^\1234567890'ì");
var ltArray:Array = letters.split("");
var shArray:Array = new Array();
var i = ltArray.length;
while (i>0) {
var shaker = Math.floor(Math.random()*ltArray.length);
shArray.push(ltArray[shaker]);
ltArray.splice(shaker, 1);
i--;
}
return shArray;
}
function shakeEffect(tfield:TextField, prec:String, to:String) {
var sh = initializeVariable();
var interval = setInterval(function () {
var l = returnLetter(sh);
tfield.text = prec+l;
if (l == to) {
clearInterval(interval);
tfield.text = prec+l;
(index>=string.length-1) ? onEndEffect() : shakeEffect(tfield, prec+l, string[++index]);
}
}, 1);
}
var index:Number = 0;
var f:String = "Questa è una prova tanto per provare";
var string:Array = f.split("");
shakeEffect(t, "", string[index]);
// t è il nome di istanza del campo di testo