1

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

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

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

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

4

1 回答 1

1

<font>派对有点晚了,但以下函数将 JSFL 静态文本元素作为输入,并根据在其 TextRuns 数组中找到的样式返回一个 HTML 字符串(使用 Flash 友好标签)。它正在做一些基本的正则表达式来清除一些标签和双空格等,并将其转换/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;
}
于 2012-03-27T15:58:05.083 回答