JSFL: преобразовать текст из текстового поля в строку формата HTML - PullRequest
1 голос
/ 19 сентября 2011

У меня обманчиво простой вопрос: как я могу получить текст из текстового поля И включить форматирование?Просматривая обычные документы, я обнаружил, что можно получить только текст.Также возможно получить форматирование текста, но это работает, только если во всем текстовом поле используется только один вид форматирования.Мне нужно точное форматирование, чтобы я преобразовал его в строку с HTML-тегами.

Лично мне это нужно, чтобы я мог передать его в пользовательский компонент текстового поля, который использует HTML для форматирования.Но его также можно использовать для простого экспорта содержимого любого текстового поля в любой другой формат.Это также может заинтересовать других.Ища решение в другом месте, я нашел это:

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

Что, кажется, делает обратное тому, что мне нужно, конвертировать HTML в Flash Text.Мои собственные попытки изменить это пока не увенчались успехом.Может быть, кто-то еще видит простой способ изменить это, что я скучаю?Могут быть и другие решения.Можно было бы получить данные EXACT текстового поля, которые должны включать теги форматирования некоторого вида (XML, при просмотре содержимого сохраненного FLA-файла).Затем удалите / конвертируйте эти теги.Но я понятия не имею, как это сделать, если это вообще возможно.Другой вариант - циклически проходить по каждому символу, используя start- и endIndex, и сохранять каждый вид форматирования в массиве.Тогда я мог бы применить форматирование к каждому символу.Но это приведет к лишним тегам.Специально для гиперссылок!Так кто-нибудь может мне помочь с этим?

1 Ответ

1 голос
/ 27 марта 2012

Немного опоздал на вечеринку, но следующая функция принимает статический текстовый элемент JSFL в качестве входных данных и возвращает строку HTML (используя Flash-friendly <font> тег), основываясь на стилях, найденных в его массиве TextRuns.Он выполняет некоторые базовые регулярные выражения, чтобы очистить некоторые теги, двойные пробелы и т. Д. И преобразовать теги /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;
}
...