Поизучайте. На практике не применял. Может содержать ошибки.

Код AS1/AS2:
/**
* @author Dimarik
* @version 1.0
* @langversion 2.0
* @playerversion 7.0
*
* Мега хрень
*
*/
class MyWords {
//-------------------------------------------------------------------------
//
// Class's variables
//
//-------------------------------------------------------------------------
public static var offsetX: Number = 10;
public static var offsetY: Number = 10;
private static var instanceCounter: Number = 0;
//-------------------------------------------------------------------------
//
// Constructor
//
//-------------------------------------------------------------------------
public function MyWords() {
super();
instanceCounter++;
}
//-------------------------------------------------------------------------
//
// Properties
//
//-------------------------------------------------------------------------
//---------------------------------
// parent
//---------------------------------
private var $parent: MovieClip;
public function set parent(value:MovieClip):Void {
if (this.$parent == value) return;
this.$parent = value || null;
// Рендерим, если есть где и если есть что
if (this.$parent && this._data) this.update();
else this.clear();
}
public function get parent():MovieClip {
return this.$parent || null;
}
//---------------------------------
// data
//---------------------------------
private var _data: String = '';
public function set data(value:String):Void {
if (this._data == value) return;
// Рендерим, если есть где и если есть что
if (this.$parent && this._data) this.update();
else this.clear();
}
public function get data():String {
return this._data;
}
//-------------------------------------------------------------------------
//
// Private variables
//
//-------------------------------------------------------------------------
private var _container: MovieClip;
//-------------------------------------------------------------------------
//
// Private methods
//
//-------------------------------------------------------------------------
private function clear() {
if (!this._container) return; // Уже очищали
// Удаляем все текстовые поля из контейнера
var object: Object;
for (var j:String in this._container) {
object = this._container[i];
if (object instanceof TextField) TextField(object).removeTextField();
}
this._container.removeMovieClip();
this._container = null;
}
private function update() {
this._container = this.$parent.createEmptyMovieClip(
"container$" + instanceCounter,
this.$parent.getNextHighestDepth()
);
var array: Array = this._data.split("");
var dx: Number = offsetX;
var dy: Number = offsetY;
var textField: TextField;
for (var i = 0; i < array.length; i++) {
dx += 15;
textField = this._container.createTextField(String(i), i, dx, dy, 10, 16);
textField.autoSize = true;
textField.selectable = false;
textField.text = array[i];
if ( dx > 300) {
dx = 10;
dy += 15;
}
}
}
}