| « Runtime иконки для Flex-компонент | Изменение размера шрифта по Ctrl+/- » |
Отображение произвольного HTML силами TLF
Показать текст с HTML-разметкой мешают следующие проблемы:
- Этот текст может не являться XML-документом
- Формат HTML не похож на XML-формат TLF. Даже если выполнен пункт 1, получившийся XML-документ нужно преобразовать в XML-формат TLF.
Первая проблема требует написания парсера и является нетривиальной. Однако не нужно писать его с нуля, их существует довольно много в свободном доступе.
Портирование HtmlCleaner на ActionScript 3.0
Для этой цели мне больше всего приглянулся HtmlCleaner. Это несложный и относительно компактный парсер-преобразователь некорректной HTML-разметки в valid XML. Он написан на Java и поэтому относительно просто переносится на ActionScript 3.0:
- Функции по работе со строками часто совпадают за исключением отсутствия в AS 3.0 StringBuffer - возможности собирать строки без создания лишних временных экземпляров строк.
- List, ArrayList и т. д. легко заменяются Array/Vector
- Map, HashMap и т. д. - Object-ом.
- Итераторы заменяются циклами. Будьте аккуратны с методами итераторов add() и set() - про них и про другие не совсем понятные вещи лучше почитать в документации, потом будет очень сложно исправлять что-то в незнакомом алгоритме.
Все вместе заняло 2 дня. Работает, причем довольно быстро, а ведь еще не оптимизировали.
Теперь пытаюсь что-то понять в TLF по ASDoc. У кого-нибудь есть толковые учебные статьи кроме статьи Михая Корлана?
P.S: Текущее состояние дел в отображении HTML во Flash Player
- flash.text.TextField. Существует в его нынешнем виде с 9 версии, но по-моему и в AS 2.0 было что-то подобное. Свойство TextField:htmlText позволяет отображать текст с разметкой, схожей с HTML. Поддерживаются теги a, p, b, i, li, span, img, font, textFormat, br. Работает плохо: элементы списков скачут по экрану при прокрутке, больше одной картинки добавлять не рекомендуется.
- TLF. В этом еще не выпущенном в релиз фреймворке есть частичная и экспериментальная поддержка HTML с помощью класса TextFilter, который предоставляет пока что нестабильную и некачественную конвертацию.
Трекбек адрес этой записи
URL трекбека (щелкните правой кнопкой мыши и скопируйте ссылку)
3 комментариев
Так по сути получается ты вместе с парсером собираешься реализовывать лэйауты
Простите, а что такое TLF?
Это





