ActionScriptで文字の縁取りをする

ActionScriptで縁取り文字を表示したい場合、複数のテキストフィールドを作って、それらを上下左右に重ねて表示することで、それっぽいものができます。

ソースコードは以下のような感じです。

function createTF(mc:MovieClip, instname:String, x:Number, y:Number, w:Number, h:Number){
    var depth = mc.getNextHighestDepth();
    return mc.createTextField(instname, depth, x, y, w, h);
}

var format:TextFormat = new TextFormat;
format.size = 15;
format.bold = true;

var tf1:TextField = createTF(_root, "NormalText", 40, 40, 230, 40);
tf1.text = "縁取りなしのテキストです。";
tf1.setTextFormat(format);

function createEdgeText(text:String, mc:MovieClip, instname:String, x:Number, y:Number, w:Number, h:Number, fmt:TextFormat):Void
{
    var px:Array = [0,  1,  0, -1, 1, -1,  1, -1];
    var py:Array = [1,  0, -1,  0, 1, -1, -1,  1];
    var tf:TextField;
    
    for(var i:Number = 0; i < 8; ++i){
        tf = createTF(mc, instname+i, x + px[i], y + py[i], w, h);
        tf.text = text;
        tf.setTextFormat(fmt);
    }
    tf = createTF(mc, instname, x, y, w, h);
    tf.text = text;
    tf.textColor = 0xffffff;
    tf.setTextFormat(fmt);
}

createEdgeText("こちらが縁取りしたテキストです。", _root, "EdgeText", 40, 80, 230, 40, format);


今回のサンプルではTextFormatでboldを指定しています。別に必須というわけではないですが、これがないと、環境によっては汚く見えてしまうことがあるようです。