come promesso...
codice:
function typewriter(target:MovieClip, delay:Number):Void {
target.interval = function() {
target._visible = true;
keyHit.start(0, 1);
clearInterval(target.intervalID);
};
target.intervalID = setInterval(target, "interval", delay);
target._visible = false;
}
function placeText(target:MovieClip, x:Number, y:Number, banner:String):Void {
var initX:Number = x;
for (var i = 0; i<banner.length; i++) {
var char:MovieClip = target.attachMovie("letter", "char"+i, target.getNextHighestDepth());
var element:String = banner.substr(i, 1);
char.field.text = element;
var spacerX:Number = char.field.textWidth;
var spacerY:Number = char.field.textHeight;
char.field.autoSize = true;
char._x = x;
char._y = y;
//
// utilizzo la sintassi abbreviata dell'if, in questo modo
// (condizione) ? azioni se soddisfatta : azioni se non soddisfatta;
// così gli dico che se trova il carattere \n deve tornare accapo incrementando y di "spacerY"
// altrimenti prosegue nella stessa riga, incrementando x di "spacerX"
x = (element != "\n") ? char._x+spacerX : initX;
y = (x == initX) ? y+spacerY : char._y;
//
var timer = i*200+Math.round(Math.random()*200);
typewriter(char, timer);
}
}
var keyHit = new Sound(this);
keyHit.attachSound("typeClick");
var nline = "\n";
var prova:String = "Questo va accapo qui"+nline+"poi riprende a scrivere,"+nline+"e va accapo nuovamente"+nline+"e così via...";
placeText(this, 100, 100, prova);
come puoi leggere dalla parte commentata, non ho fatto altro che verificare, per ogni carattere, che non corrispondesse al "\n" (accapo) e se così era... doveva ripartire da zero in X e incrementare Y di una riga
ps. ho eliminato il TextFormat, perchè in questo caso non era necessario, e ho aggiunto "autoSize" che ridimensiona il campo di testo il base al proprio contenuto (questo per evitare che lo spazio del campo contenuto nel clip in libreria non bastasse per le lettere più grosse, in particolare le maiuscole)