CreareJSのTextで指定した幅で自動折り返しした複数行テキストを返す関数(日本語対応)


EaselJS(0.6.1で確認)においてTextに日本語を指定すると、lineWidthが効かず改行されません。
これはこの問題を解決するための関数です。(Haxeコードです)

hoge.hx
import createjs.easeljs.Text;
class Main {
    //指定した幅(lineWidth)で自動折り返しした複数行テキストを返す
    public static function wrapText(text:Text, lineWidth:Int):String {
        text.lineWidth = null;

        var str = text.text;
        var newStr:String = "";
        var r:EReg = new EReg("[\r\n]+|[\n]+|[\n]+", "g");
        var lines:Array<String> = r.split(str);

        var line:String;
        var words:Array<String>;
        var oneLineStr:String;
        var len:Int = lines.length;
        for (i in 0...len) {
            line = lines[i];
            text.text = line;
            if (text.getMeasuredWidth() < lineWidth ) {
                newStr += line;
                if(i < len-1) newStr += "\n";
                continue;
            }

            words = line.split("");//一文字ごとに分割する
            oneLineStr = "";
            for (w in words) {
                text.text = oneLineStr + w;
                if (text.getMeasuredWidth() > lineWidth ) {
                    newStr += oneLineStr + "\n";
                    oneLineStr = "";
                }
                oneLineStr += w;
            }
            newStr += oneLineStr;
            if(i < len-1) newStr += "\n";
        }

        text.text = newStr;

        return newStr;
    }
}