Что-то вы тут перемудрили.
1. Зачем таймер стартует сразу же, если при первом же срабатывании он останавливается?
2. Зачем таймер останавливается в начале слушателя on_keyDown? (попробуйте нажать любую не назначенную клавишу во время анимации печати)
3. Опять же, к чему эта копи-паста внутри if else if? К тому же в конце проверка кода клавиши дублируется. У вас на 4 кнопки одно действие, значит и проверка должна быть только одна.
Я бы сделал как-то так

Код AS3:
import flash.ui.Keyboard;
stop();
var keysMap:Object = {}; //код клавиши : номер кадра;
keysMap[Keyboard.NUMBER_1] = 1;
keysMap[Keyboard.NUMBER_2] = 2;
keysMap[Keyboard.NUMBER_3] = 3;
keysMap[Keyboard.NUMBER_4] = 4;
var timer1:Timer=new Timer(20);
timer1.addEventListener(TimerEvent.TIMER, frameLooper);
stage.addEventListener(KeyboardEvent.KEY_DOWN, on_keyDown);
var text:String = "";
var currentSymbol:int = 0;
var pattern:RegExp = new RegExp(String.fromCharCode(13), "g"); //регулярка, ищущая все возвраты каретки в строке
var repl:String = String.fromCharCode(10); //символ переноса \n
function frameLooper(event:TimerEvent):void {
if (currentSymbol < text.length) {
answer_tf.appendText(text.charAt(currentSymbol++));
} else {
timer1.stop();
}
}
function on_keyDown(e:KeyboardEvent):void {
if (keysMap.hasOwnProperty(e.keyCode)) {
answer_tf.text="";
dialogs.gotoAndStop(keysMap[e.keyCode]);
text = dialogs.tf.text.replace(pattern, repl);
currentSymbol = 0;
timer1.start();
}
}
А вообще это все баловство и ничего вменяемого с таким подходом не получиться.