"Typing" XML text

More on the project I’ve posted about recently…

I’ve developed a class, TypewriterXML, that loads text from an XML file and IS SUPPOSED TO render the text typewriter-like. Here’s TyperwriterXML:


package {
 import flash.display.Sprite;
 import flash.net.URLLoader;
 import flash.net.URLRequest;
 import flash.events.*;
 import flash.text.TextField;
 import flash.text.TextFormat;
 import flash.utils.*;
 
 public class TypewriterXML extends Sprite {
  private var xmlFile:String;
  private var xmlData:XML;
  private var urlLoader:URLLoader;
  private var _speed:Number;
  private var _tX:uint;
  private var _tY:uint;
  private var _tWidth:uint;
  private var _tHeight:uint;
  private var _primaryFormat:String;
  private var _formatMatrix:Array;
  private var _textField:TextField;
  private var _typeText:String;
  private var typeTimer:Timer;
  private var count:int;
  private var str:String;
 
  private var testTextField:TextField;
  private var testString:String;
 
  private var defaultFormat:TextFormat;
 
  public function TypewriterXML(arg_filename:String,
           arg_speed:uint,
           arg_x:int,
           arg_y:int,
           arg_width:int,
           arg_height:int,
           arg_primaryFormat:String,
           arg_formatMatrix:Array) {
   xmlFile = arg_filename;
   _speed = arg_speed;
   _tX = arg_x;
   _tY = arg_y;
   _tWidth = arg_width;
   _tHeight = arg_height;
   _primaryFormat = arg_primaryFormat;
   _formatMatrix = arg_formatMatrix;
   var urlRequest:URLRequest = new URLRequest(xmlFile);
   urlLoader = new URLLoader();
   urlLoader.addEventListener(Event.COMPLETE, xmlCompleteListener);
   urlLoader.load(urlRequest);
  }
  private function xmlCompleteListener(e:Event) {
   xmlData = new XML(urlLoader.data);
   str = xmlData.PAR1.toString();
   typewriter(_speed, _tX, _tY, _tWidth, _tHeight,
        _primaryFormat, _formatMatrix);
  }
  private function typewriter(_speed, _tX, _tY, _tWidth, _tHeight,
         _primaryFormat, _formatMatrix):void {
   _textField = new TextField();
   typeTimer = new Timer(_speed);
   typeTimer.addEventListener(TimerEvent.TIMER, type);
   typeTimer.start();
   count = 0;
   _textField.text = "";
   _textField.x = _tX;
   _textField.y = _tY;
   _textField.wordWrap = false;
  }
  private function type(e:TimerEvent) {
   _textField.text = str.substring(0, count);
   trace("_textField.text = " + _textField.text);
   addChild(_textField);
   count++;
   if (count > str.length) {
    typeTimer.stop();
   }
  }
 }
}

Problem: Although the trace in the type() function shows that the text is rendering letter by letter (meaning the class works), I cannot make the text render on the stage. Note that I have addChild(_textField); in the type() function – I thought this should do it. But it doesn’t.

Probably a simple solution? Help please.