Форматирование текста при помощи HTML

Отформатировать текст, отображаемый в поле, можно не только используя свойства класса TextFormat. Огромным достоинством текстовых полей Flash является то, что они способны интерпретировать HTML. Правда, ими поддерживается всего лишь несколько тегов из десятков имеющихся в HTML 4. Но и их вполне достаточно, чтобы весьма тонко настроить вид текста.

Во Flash 5 применение HTML было единственной возможностью отобразить в одном поле текст, разные фрагменты которого были бы заданы в разных стилях. Сейчас эта задача также может быть решена при помощи свойств класса TextFormat и CSS. По своим возможностям все способы форматирования схожи. Однако у HTML-разметки есть свои объективные преимущества:

• Если вы знаете язык разметки гипертекста, то, используя его, качественно отформатировать текст вам будет гораздо проще, чем создавая при помощи громоздких участков кода объект стиля.

• Применять HTML удобно, если текстовая информация поступает на сайт из внешнего источника. Это позволяет отображать хорошо отформатированный текст, не проводя перекомпиляции фильма (что бы потребовалось, если бы стиль текста задавался при помощи ActionScript).




По умолчанию текстовые поля не анализируют текст на предмет наличия тегов HTML, Чтобы активизировать соответствующий режим:

• если поле создано вручную, то необходимо нажать специальную кнопку Render Text As HTML;

• если поле изготовлено программно или же режим поддержки HTML должен быть включен динамически, то значение true должно быть присвоено специальному свойству html поля.

Чтобы отобразить HTML-текст, его нельзя просто набрать в поле в режиме редактирования. При этом он будет визуализирован без проведения какого-либо анализа имеющихся тегов. То же самое произойдет, если присвоить строку с HTML-текстом свойству text поля. Чтобы текстовое поле разбирало связанную с ним строку на предмет наличия тегов HTML, она должна быть присвоена или перемен ной поля, или особому свойству htmlText. Например:

this.createTextField("pole",0,200,200,0,0);
pole.autoSize=pole.html=true;
// Отображаем текст шрифтом с кеглем 20 с курсивно-полужирным начертанием
pole.htmlText= " Типичное HTML-форматирование
";

В значении свойства htmlText совмещается текстовая информация со сведениями о необходимом формате ее отображения.


Во внутреннем же представлении поля текст и его стиль разделены. По-этому при необходимости можно узнать, какой текст отобразится в результате анализа значения htmlText. Для этого нужно обратиться к свойству text поля. Можно также определить любую характеристику форматирования текста. Для этого необходимо прочитать значение соответствующего ей свойства объекта класса TextFormat текста. Например, попробуем узнать, какой текст отображается в созданном выше поле pole, а также размер используемого при этом шрифта.

trace(pole.text); // Выводит: Типичное HTML-форматирование
trace(pole.getTextFormat().size); // Выводит: 20

Важно понимать, что нет никакой разницы в том. как задается текст и стиль его отображения: при помощи HTML или свойства text и класса TextFormat. В обоих случаях определяются одни и те же настройки внутренней организации текстового поля. Поэтому все, что мы говорили, например, о задании гарнитуры при помощи свойства font, в равной степени справедливо и если используемый шрифт определяется атрибутом FACE тега . Чтобы не повторяться, мы не будем подробно излагать особенности, связанные с заданием той или иной характеристики стиля при помощи со-ответствующего тега HTML.


Если у вас возникнут сложности или вопросы, обратитесь к описанию аналогичного свойства класса TextFormat.

Если включен режим поддержки HTML, то система будет автоматически формировать величину свойства htmlText (а также значение переменной поля) исходя из текста поля и стиля его отображения. Причем данные параметры могут быть определены и не через HTML, а при помощи свойства text и класса TextFormat. Например:

this.createTextField("pole", 0, 100, 200, 0, 0);
pole.text = "Наш сайт находится по адресу: http://www.piter.com";
pole.html = pole.autoSize=true;
pole.setTextFormat(0, 30, new TextFormat("Arial Cyr", 20, 0, null, true, null,
null, null, "center", 20));
pole.setTextFormat(30, 45, new TextFormat("Tahoma", 20, 0x0000FF, false, true,
true, "http://www.piter.com", "_self"));
trace(pole.htmlText); /* Выводит:


Наш сайт находится no адресу:

http://www.piter.com/

*/

Приведенный пример еще раз доказывает, что задание стиля при помощи тегов HTML и свойств класса Text Format — абсолютно взаимозаменяемые подходы. Поэтому применять вы можете тот из них, который вам более удобен.

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

this.createTextField("pole",0,150,150, 30, 30) ;
var pole_text:String=null; // Переменная поля
pole.variable="pole_text";
pole.text="Текст"; // Задаем текст поля
trace(pole_text); // Выводит: Текст
pole.html=true; // Включаем режим поддержки HTML
pole.text="Hoвый текст"; // Обновляем текст поля
trace(pole text); // Выводит: <Р ALIGN="LEFT"> // SIZE="12" COLOR="#000000">Текст



В правилах задания HTML-текста для Flash имеются серьезные различия по сравнению с теми, которые используются браузерами. Наиболее существенным из них является то, что значение, присваиваемое атрибуту тега, всегда должно прописываться в кавычках. Это нужно делать, даже если соответствующая величина является не строкой, а числом. Например, следующий код будет «понят» браузером, но не интерпретатором Flash-плейера:

Привет!

Чтобы размер шрифта был задан, значение атрибута SIZE необходимо взять в кавычки:

Привет!

Величины атрибутов можно заключать как в двойные, так и в одинарные кавычки. Главное, они должны отличаться от тех, при помощи которых была задана строка с самим HTML-текстом.

В HTML нет полной чувствительности к регистру (в отличие от XML). Поэтому теги и атрибуты тегов вы можете прописывать как строчными, так и большими буквами. В этой книге текст тегов и атрибутов тегов мы будем задавать символами верхнего регистра: так легче различить основной текст и текст форматирования в строках HTML.

Если интерпретатор HTML Flash-плейера встретится с незнакомым тегом, то он его просто проигнорирует. Это означает, что никакие действия произведены не будут, однако и сам тег в виде обычного текста не отобразится:

Teкст // Отобразится: Текст

Если текст форматируется при помощи HTML, то ряд символов в нем считаются служебными — и они никогда не визуализируются (более того, они попросту не включаются в основной текст). Это угловые скобки, задающие теги (< >), а также одинарная и двойная кавычки и символ амперсанда (&). Чтобы ввести их в основной текст, нужно использовать специальные объекты-заменители HTML (часто называемые сущностями): > — соответствует «<», < —- «>», " — задает кавычки, & — вводит амперсанд. Например:

<В>Тег "⁢U>" служит для задания подчеркнутого текста
Отобразит: Тег "" служит для задания подчеркнутого текста

В традиционном HTML имеются и прочие объекты-заменители (например, для задания знака © применяется сущность &сору;). Однако Flash они не поддерживаются.

Так как HTML-текст является обычной строкой, то ввести в него кавычки можно при помощи со-ответствующих escape-последовательностей (этот ход нельзя использовать, если текст поступает в уже скомпилированный фильм):

pole.htmlText="Тег \"\" служит для задания подчеркнутого текста";

Далеко не все символы могут быть введены при помощи клавиатуры. Очень многие полезные знаки не нашли на ней отображения. Чтобы ввести такие символы в текст, нужно использовать escape-последовательности с их Unicode-номерами (невозможно в случае текста, поступающего в уже скомпилированный текст). Например:

// Строка задает четыре китайских иероглифа
pole.htmlText="'#FF0000'>\u5674\u7865\u6745\u8767";

Если необходимый символ входит в набор ASCII, а сам текст является HTML-текстом, то ввести его можно при помощи записи вида «&#number;», где number —десятичный номер символа в ко-дировке. Например:

pole.htmlText="© Macromedia"; // Выводит: © Macromedia

Объективно говоря, применять сущности HTML вместо escape-последовательностей Unicode нет никакого смысла. Не имея никаких преимуществ, они обладают куда меньшим числом возможностей. Главным же их недостатком является то, что они зависят от кодовой страницы, используемой операционной системой. Поэтому на разных машинах одна и та же сущность может дать раз-ный результат.

Текстовые поля Flash поддерживают следующие теги HTML:

,
, , , , , ,

  • , , , , – всего 12. Первые 8 из них являются стандартными, и при помощи их можно разметить как гипертекст, так и текст для Flash. Теги <ТАВ> и не стандартны. Они добавлены для того, чтобы разметка в стиле HTML по своим возможностям не уступала форматированию с использованием свойств класса TextFormat. Поддержка тега была введена только во Flash MX 2004. Используя его, можно встраивать в текстовые поля изображения, а также клипы и внешние фильмы. Тег позволяет связывать фрагменты текста с классовыми стилями CSS. Он также начал поддерживаться
    только в последней версии программы.

    Оцените статью: (0 голосов)
    0 5 0

    Статьи из раздела Action Script на эту тему:
    Автоматическое удаление пробелов. Свойство condenseWhite
    Встраивание в фильм целого шрифта
    Динамическая замена выделенного текста. Метод replaceSel()
    Динамическое задание выделения. Метод setSelection()
    Задание и извлечение текста поля

  • Вернуться в раздел: Action Script / 13. Работа с текстом