JSFL:将文本从文本字段转换为HTML格式字符串

时间:2011-09-19 09:20:20

标签: html export textfield jsfl

我有一个看似简单的问题:如何从文本字段中获取文本并包含格式?通过通常的文档,我发现只能获得文本。也可以获取文本格式,但这仅在整个文本字段仅使用一种格式时才有效。我需要精确的格式,以便将其转换为带有html标签的字符串。

我个人需要这个,所以我可以将它传递给使用HTML进行格式化的自定义文本字段组件。但它也可以用于简单地将任何文本字段的内容导出为任何其他格式。这也可能是其他人感兴趣的。 在其他地方寻找解决方案我发现了这个:

http://labs.thesedays.com/blog/2010/03/18/jsfl-rich-text/

这似乎与我需要的相反,将HTML转换为Flash Text。到目前为止,我自己试图扭转这种局面并未取得成功。也许其他人看到了一个简单的方法来扭转我的错过?可能还有其他解决方案。一种可能是获取文本字段的EXACT数据,其中应包括某种格式标记(XML,当查看存储的FLA文件的内容时)。然后删除/转换这些标签。但是,如果可能的话,我不知道如何做到这一点。另一种选择是使用start-和endIndex循环遍历每个字符,并将每种格式类型存储在数组中。然后我可以将格式应用于每个字符。但这会导致标签过多。特别是超链接!所以有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

派对有点晚,但是以下函数将JSFL静态文本元素作为输入,并根据找到它的TextRuns数组的样式返回HTML字符串(使用Flash友好<font>标记)。它正在做一些基本的正则表达式来清理一些标签和双空格等,并将/r/n转换为<br/>标签。它可能并不完美,但希望你能看到发生了什么变得容易改变或修复它。

function tfToHTML(p_tf)
{
    var textRuns = p_tf.textRuns;
    var html = "";

    for ( var i=0; i<textRuns.length; i++ )
    {
        var textRun = textRuns[i];
        var chars = textRun.characters;

        chars = chars.replace(/\n/g,"<br/>");
        chars = chars.replace(/\r/g,"<br/>");
        chars = chars.replace(/  /g," ");
        chars = chars.replace(/. <br\/>/g,".<br/>");

        var attrs = textRun.textAttrs;

        var font = attrs.face;
        var size = attrs.size;
        var bold = attrs.bold;
        var italic = attrs.italic;
        var colour = attrs.fillColor;

        if ( bold )
        {
            chars = "<b>"+chars+"</b>";
        }

        if ( italic )
        {
            chars = "<i>"+chars+"</i>";
        }

        chars = "<font size=\""+size+"\" face=\""+font+"\" color=\""+colour+"\">"+chars+"</font>";

        html += chars;
    }

    return html;
}
相关问题