У меня рисует раз через пять, причем непонятно от чего зависит. Ставил input, dynamic, разные параметры сглаживания и разный размер шрифта. Не стоит отрисовывать битмапой тектовое поле, нет в это веры.
Стало быть...

Код:
import flash.geom.*;
import flash.display.BitmapData;
function getSize (mc:MovieClip):Rectangle {
var bmp:BitmapData = new BitmapData (Math.ceil(mc._width), Math.ceil(mc._height), true, 0);
bmp.draw (mc);
var rect:Rectangle = bmp.getColorBoundsRect(0xFF000000, 0x00000000,false);
bmp.dispose();
drawBounds(mc, rect);
return rect;
}
getTextBounds = function(txt) {
var x = txt._x;
var y = txt._y;
var w = txt._width;
var h = txt._height;
var temp_mc:MovieClip = createEmptyMovieClip('temp_mc', getNextHighestDepth());
var temp_txt:TextField = temp_mc.createTextField('txt',1,0,0,w+5,h+5);
temp_txt.embedFonts = txt.embedFonts;
temp_txt.text = txt.text;
temp_txt.setTextFormat(txt.getTextFormat());
var rect:Rectangle = getSize(temp_mc);
// temp_mc.removeMovieClip();
rect.offset(x,y);
return rect;
}
function drawBounds( mc:MovieClip, rect:Rectangle ){
mc.clear();
mc.beginFill(0xFF0000, 30);
mc.moveTo(rect.left, rect.top);
mc.lineTo(rect.left, rect.bottom);
mc.lineTo(rect.right, rect.bottom);
mc.lineTo(rect.right, rect.top);
mc.lineTo(rect.left, rect.top);
mc.endFill();
}
rect = getTextBounds(txt);
drawBounds(this, rect);
trace(rect);
Все равно косячит, но программный клон нормально обводит.