I solved this myself and I'll post it here so otherc can benefit. Donate my points to the poor and hungry, please.

The trick is to use a circle, and the drawEllipse function from the Actionscript Cookbook works very nicely as a basis:

In the function below, the radius arguments will control how thick the border is and the x and y arguments need to be the same as the origin of the textField (embedded in an mc in this case but that's not necessary). The more segments you create the smoother the effect is and obviously you need to zero the alpha of the ellipse to hide your guide line and to make the offset textFormat object exactly the same as the format of your original text, except in color or alpha.

I suspect that drop shadow and other effects can be created by making the radius irregular, also.

function drawEllipse(xRadius, yRadius, x, y)

{

var ellipse_mc:MovieClip = container_mc.createEmptyMovieClip("ellipse_mc", 1);

ellipse_mc.lineStyle(0, 0x000000, 100);

var angleDelta = Math.PI / 24; // Number of segments

var xCtrlDist = xRadius/Math.cos(angleDelta/2);

var yCtrlDist = yRadius/Math.cos(angleDelta/2);

var rx, ry, ax, ay;

var angle:Number = 0;

ellipse_mc.moveTo(x + xRadius, y);

for (var i = 0; i < 48; i++)

{ // iteration should be twice number of segments

angle += angleDelta;

rx = x + Math.cos(angle-(angleDelta/2))*(xCtrlDist);

ry = y + Math.sin(angle-(angleDelta/2))*(yCtrlDist);

ax = x + Math.cos(angle)*xRadius;

ay = y + Math.sin(angle)*yRadius;

ellipse_mc.curveTo(rx, ry, ax, ay);

var clipString:String;

clipString = "offset_" + i + "_mc";

var offset_mc = container_mc.attachMovie(clip_str, clipString, 0 - i, {_x:rx, _y:ry});

offset_mc.text_txt.text = text_mc.text_txt.text;

var offset_fmt:TextFormat = new TextFormat();

offset_fmt.font = "Arial";//__font_str;

offset_fmt.size = (__fontHeight);

offset_fmt.color = 0xFF0000//Number(__textColor_str);

offset_mc.text_txt.setTextFormat(offset_fmt);

}

}

The trick is to use a circle, and the drawEllipse function from the Actionscript Cookbook works very nicely as a basis:

In the function below, the radius arguments will control how thick the border is and the x and y arguments need to be the same as the origin of the textField (embedded in an mc in this case but that's not necessary). The more segments you create the smoother the effect is and obviously you need to zero the alpha of the ellipse to hide your guide line and to make the offset textFormat object exactly the same as the format of your original text, except in color or alpha.

I suspect that drop shadow and other effects can be created by making the radius irregular, also.

function drawEllipse(xRadius, yRadius, x, y)

{

var ellipse_mc:MovieClip = container_mc.createEmptyMo

ellipse_mc.lineStyle(0, 0x000000, 100);

var angleDelta = Math.PI / 24; // Number of segments

var xCtrlDist = xRadius/Math.cos(angleDelt

var yCtrlDist = yRadius/Math.cos(angleDelt

var rx, ry, ax, ay;

var angle:Number = 0;

ellipse_mc.moveTo(x + xRadius, y);

for (var i = 0; i < 48; i++)

{ // iteration should be twice number of segments

angle += angleDelta;

rx = x + Math.cos(angle-(angleDelta

ry = y + Math.sin(angle-(angleDelta

ax = x + Math.cos(angle)*xRadius;

ay = y + Math.sin(angle)*yRadius;

ellipse_mc.curveTo(rx, ry, ax, ay);

var clipString:String;

clipString = "offset_" + i + "_mc";

var offset_mc = container_mc.attachMovie(c

offset_mc.text_txt.text = text_mc.text_txt.text;

var offset_fmt:TextFormat = new TextFormat();

offset_fmt.font = "Arial";//__font_str;

offset_fmt.size = (__fontHeight);

offset_fmt.color = 0xFF0000//Number(__textCol

offset_mc.text_txt.setText

}

}