Март 2011

Руководство по actionscript. часть 5, стр. 095

Var regularFormat:TextFormat = new TextFormat( );

regularFormat. bold = false;

t. setTextFormat(regularFormat,

t. textлndex0f(«This isn’t bold.»),

t. length);

Подобный подход, применяемый для форматирования добавляемого пользователем текста, продемонстрирован далее, в разд. «Ввод через текстовые поля».

Хотя формат текста по умолчанию в основном является внутренним инструментом среды Flash, разработчики могут использовать его для решения одной важной задачи: устанавливать форматирование пустого текстового поля. Формат для пустого объекта TextField указывается путем присваивания объекта TextFormat переменной def aultTextFormat объекта TextField, как показано в следующем коде:

// Создаем текстовое поле

var t:TextField = new TextField( );

t. width = 300;

// Создаем объект TextFormat

var defaultFormat:TextFormat = new TextFormatC );

defaultFormat. size = 20;

defaultFormat. color = OxFFOOOO;

defaultFormat. font = «Verdana»;

// Присваиваем объект TextFormat переменной defaultTextFormat объекта t t. defaultTextFormat = defaultFormat;

Как только переменной def aultTextFormat пустого объекта TextField будет присвоено значение, весь текст, добавляемый в данное поле (либо программным путем, либо через пользовательский ввод), будет отформатирован в соответствии с указанным значением переменной def aultTextFormat до тех пор, пока к символам в текстовом поле не будет применено новое пользовательское форматирование. Например, следующий код добавляет новый текст в объект t; текст автоматически форматируется с использованием шрифта Verdana размером 20 пунктов красного цвета (в соответствии со значением переменной t. def aultTextFormat):

Когда к символам в текстовом поле будет применено пользовательское форматирование, новый текст, добавляемый в поле, будет отформатирован в соответствии с форматом текста в месте вставки.

Руководство по actionscript. часть 5, стр. 096

Теперь, когда мы познакомились с основами форматирования текста с помощью класса TextFormat, перейдем к форматированию текста с помощью разметки HTML.

HTML-форматирование текста

Чтобы применить форматирование к текстовому полю с помощью разметки HTML, используется следующая базовая последовательность действий.

1. Создать объект TextField.

2. Создать строку текста, представляющую разметку HTML, с использованием ограниченного набора HTML-тегов форматирования, поддерживаемых языком ActionScript.

3. Присвоить текст, отформатированный с помощью разметки HTML, переменной htmlText объекта TextField. Любой текст, отформатированный с помощью разметки HTML и присвоенный переменной htmlText, выводится на экран в виде отформатированного текста.

Применим перечисленные шаги на примере. Наша цель — отформатировать весь текст в поле, используя шрифт Arial размером 20 пунктов с полужирным начертанием (как мы делали это ранее с помощью объекта TextFormat).

Начнем с создания текстового поля, которое будет автоматически изменять свои размеры, чтобы соответствовать нашему отформатированному тексту:

var t:TextField = new TextField( ); t. autoSize = TextFieldAutoSize. LEFT;

Затем мы создадим нашу отформатированную текстовую строку, используя теги и :

var message:String = «»

+ «ActionScript is fun!«;

Наконец, присваиваем строку, содержащую разметку HTML, переменной htmlText объекта t:

t. html Text = message; Результат показан на рис. 27.11.

Руководство по actionscript. часть 5, стр. 097

ActionScript is fun! Рис. 27.11. Текст, отформатированный с помощью разметки HTML

Зачастую текст, содержащий разметку HTML, присваивается непосредственно переменной htmlText, как показано в следующем коде:

t. htmlText = «»

+ «ActionScript is fun!«;

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

языком ActionScript теги и атрибуты HTML, дополненные перекрестными ссылками на эквивалентные переменные класса TextFormat. Дополнительную информацию по поддержке HTML в языке ActionScript можно найти в разделе, посвященном описанию переменной экземпляра htmlText класса TextField, справочника по языку ActionScript корпорации Adobe.

В отличие от автономной версии приложения Flash Player и версии, реализованной в виде модуля расширения браузера, приложение Adobe AIR включает полнофункциональные синтаксический анализатор и подсистему визуализации разметки HTML, которые способны обрабатывать весь диапазон инструкций языка HTML, таблиц стилей CSS и языка JavaScript, обычно применяемых в браузерах.

Обратите внимание, что, когда таблицы стилей не используются, приложение Flash Player автоматически добавляет разметку HTML к строковому значению переменной htmlText, если HTML-код, присвоенный переменной htmlText, не полностью описывает форматирование текстового поля. Например, следующий код присваивает переменной htmlText текст, не содержащий теги или :

var t:TextField = new TextField( );

t. htmlText = «This field contains HTML!«;

Прочитав значение переменной t. htmlText, мы обнаружим, что были добавлены теги и :

trace(t. htmlText); // Выводит:

This field contains HTML!



Теперь рассмотрим набор тегов и атрибутов языка HTML, поддерживаемых языком ActionScript, которые представлены в табл. 27.5.

Руководство по actionscript. часть 5, стр. 098

Таблица 27.5. Теги языка HTML, поддерживаемые языком ActionScript

Тег Описание Атрибуты Описание Эквивалентная переменная экземпляра класса TextFormat

1 2 3 4 5

Определяет гипертекстовую ссылку HREF Задает цель гипертекстовой ссылки url

TARGET Определяет окно или фрейм гипертекстовой ссылки target

Задает отображение символа с использованием полужирного начертания Отсутствует bold



Вызывает разрыв строки в теле текста; функционально эквивалентен служебной последовательности \п Отсутствует Отсутствует

1 2 3 4 5

Определяет информацию о шрифте FACE Определяет название шрифта font

SIZE Задает размер шрифта, в пунктах size

COLOR Определяет цвет шрифта в виде 24-битного целого шестнадцатерично-го числа, которому предшествует знак фунта (#). Например, красный цвет записывается как #FF0000 color

KERNING Указывает, нужно ли использовать кернинг для пар символов (1 означает «использовать», 0 — «не использовать») kerning

LETTERSPACING Определяет расстояние между буквами (то есть тре-кинг), в пикселах letterSpacing

Задает отображение символа с использованием курсива Отсутствует italic

Определяет отображаемый элемент, вставляемый в текстовое поле SRC Местоположение элемента (изображение, SWF-файл или символ клипа), вставляемого в текстовое поле Отсутствует

WIDTH Необязательная ширина вставляемого элемента Отсутствует

HEIGHT Необязательная высота вставляемого элемента Отсутствует

ALIGN Необязательное выравнивание вставляемого элемента по горизонтали Отсутствует

HSPACE ‘ Необязательное пространство по горизонтали, окружающее вставляемый элемент Отсутствует

VSPACE Необязательное пространство по вертикали, окружающее вставляемый элемент Отсутствует

Таблица 27.5 (продолжение)

1 2 3 4 5

ID • Определяет необязательный идентификатор, по которому можно обращаться к вставляемому элементу через метод экземпляра getlmage-Reference() класса TextField Отсутствует

CHECKPOLICYFILE Указывает, требуется ли проверка файла политики безопасности перед обращением к элементу в виде данных (см. гл. 19) Отсутствует

Определяет абзац, перед которым отображается маркер. Стоит отметить, что изменить форму маркера невозможно, а теги

    или не требуются Отсутствует bullet

    Определяет абзац ALIGN Определяет выравнивание абзаца по горизонтали (по левому, правому краю, по центру или по ширине) align

    CLASS Определяет класс CSS, применяется вместе с таблицами стилей Отсутствует

    Помечает произвольный фрагмент текста, который может быть отформатирован с помощью таблицы стилей CLASS Определяет класс CSS, применяется вместе с таблицами стилей Отсутствует

    Определяет форматирующую информацию для фрагмента текста LEFTMARGIN Определяет расстояние по горизонтали в пикселах между левой границей текстового поля и левым краем абзаца leftMargin

    RIGHTMARGIN Задает расстояние по горизонтали в пикселах между правой границей текстового поля и правым краем абзаца rightMargin

    1 2 3 4 5

    BLOCKINDENT Определяет расстояние в пикселах, на которое смещается абзац относительно левой границы текстового поля blocklndent

    INDENT Определяет расстояние в пикселах, на которое смещается первая строка относительно левой границы текстового поля. indent

    LEADING Определяет величину промежутка по вертикали в пикселах между строками текста leading

    TABSTOPS Определяет шаги табуляции по горизонтали, в пикселах tabStops

    Задает отображение символа с использованием подчеркивания Отсутствует underline

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

Руководство по actionscript. часть 5, стр. 099

? Тег

не поддерживается; используйте шаги табуляции для имитации таблиц языка HTML.

? В языке ActionScript разметка HTML в основном используется для форматирования, и содержимое HTML не организуется в виде метафоры документа браузера. Следовательно, теги и не являются обязательными (однако тег по желанию может использоваться для форматирования содержимого HTML с помощью таблиц стилей).

? Неподдерживаемые теги игнорируются, хотя их текстовое содержимое сохраняется.

? В языке ActionScript значения, присваиваемые атрибутам тегов, должны заключаться в кавычки. Дополнительная информация представлена в подразд. «Заключение в кавычки значений атрибутов».

? В среде выполнения Flash гипертекстовые ссылки автоматически не подчеркиваются — подчеркивание должно выполняться вручную либо с помощью тега , либо с помощью переменной text-decoration таблицы стилей CSS.

? Тег не поддерживает вложенные маркеры и тег (нумерованный список).

? В приложении Flash Player незакрытые теги не вызывают разрывы строк, как это происходит в обычном языке HTML. Для добавления разрывов строк Flash Player требует, чтобы были указаны закрывающие теги.

? В приложении Flash Player тег вызывает один разрыв строки, как и тег

, хотя в браузерах тег обычно вызывает двойной разрыв строки.

? Теги и

не вызывают разрывы строк в текстовых полях, переменной multiline которых присвоено значение false. Более того, переменной multiline по умолчанию присваивается значение false. Таким образом, при использовании тегов и

присваивайте переменной multiline значение true.

? Гипертекстовые ссылки могут быть использованы для выполнения кода на языке ActionScript. Дополнительную информацию можно найти далее, в подразд. «Гипертекстовые ссылки» разд. «Ввод через текстовые поля».

? Атрибут NAME тега не поддерживается приложением Flash Player, поэтому внутренние ссылки внутри тела текста невозможны.

Руководство по actionscript. часть 5, стр. 100

? В среде выполнения Flash якорные теги не добавляются в последовательность перехода, и поэтому на них нельзя перейти с помощью клавиатуры.

Поддержка сущностей

Сущности специальных символов, поддерживаемые языком ActionScript, перечислены в табл. 27.6. Если сущность встречается в значении переменной htmlText текстового поля, то приложение Flash Player отображает на экране соответствующий символ. Поддерживаются также и числовые сущности, например T 82; (символ торгового знака).

Таблица 27.6. Поддерживаемые сущности

Сущность Представляемый символ

< <

> >

& &

" ii

' ¦

  Неразрывный пробел

Заключение в кавычки значений атрибутов

За пределами приложения Flash Player значения атрибутов языка HTML могут быть заключены в одинарные или двойные кавычки либо вообще быть без кавычек. Следующие теги допустимо использовать в большинстве браузеров:



Однако в приложении Flash Player значения атрибутов, не заключенные в кавычки, недопустимы. Например, в языке ActionScript синтаксис недопустим. Тем не менее для отделения значений атрибутов можно использовать как одинарные, так и двойные кавычки. При создании значений текстовых полей, содержащих атрибуты языка HTML, используйте один тип кавычек для обозначения самой строки, а другой тип кавычек — для отделения значений атрибутов. Например, оба следующих примера допустимы:

t. htmlText = «hi there

«; t. htmlText = ‘

Hi there

‘;

Однако следующий пример приведет к ошибке, поскольку двойные кавычки используются и для обозначения строки, и для отделения значения атрибута:

// НЕПРАВИЛЬНО! Не делайте так!

t. htmlText = «hi there

«;

Взаимосвязь переменных text и htmlText

Поскольку присваивать текстовое содержимое текстовому полю можно и с помощью переменной text, и с помощью переменной htmlText класса TextField, проявляйте осторожность при одновременном их использовании.

Руководство по actionscript. часть 5, стр. 101

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

var t:TextField = new TextField( );

t. htmlText = ‘

‘ +

+ ‘ + ‘LETTERSPACING=»0″ KERNING=»0″>This field contains HTML!

+ ‘

‘;

После присваивания переменная htmlText будет иметь следующее значение:

This field contains HTML!



Однако переменная text будет иметь следующее значение:

This field contains HTML!

Обратите внимание, что последовательные присваивания значений переменным htmlText и text перезаписывают предыдущие результаты. Иначе говоря, присваивание нового значения переменной text перезаписывает существующее значение переменной htmlText, и наоборот. В отличие от этого, последовательные операции конкатенации (не повторного присваивания) не перезаписывают существующие значения. Например, следующий код присваивает некоторое содержимое HTML переменной htmlText, после чего выполняет конкатенацию данного содержимого со строкой через переменную text:

var t:TextField = new TextField( ); t. htmlText = «Hello«; t. text += » world»:

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

hello world



Как показано в предыдущем коде, конкатенация значения переменной text со значением переменной htmlText приводит к сбрасыванию форматирования текстового поля. Когда мы присваиваем строку «world» переменной text, среда выполнения

Flash удаляет тег, который изначально был присвоен переменной htmlText! Таким образом, одновременное использование операций присваивания значений переменным text и htmlText в большинстве случаев не рекомендуется.

Руководство по actionscript. часть 5, стр. 102

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

var t:TextField = new TextField( ); t. text = «World«; t. html Text += «hello»;

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

&1t;B&gt:world&lt:/B>hei1o



Обратите внимание, что символы < и > в теге были преобразованы в сущности языка HTML < h>.

Нераспознанные теги и атрибуты

Как и браузеры, приложение Flash Player игнорирует теги и атрибуты, которые не может распознать. Например, мы присвоим следующее значение переменной htmlText:

Р1ease fill in and print this form

Thank you!



В результате на экране появится следующий текст:

Please fill in and print this form Thank you!

Элементы и
не поддерживаются приложением Flash Player, поэтому оба тега игнорируются (фактически неизвестные теги удаляются из значения переменной htmlText!).

Руководство по actionscript. часть 5, стр. 103

Подобным образом, если мы используем контейнерные элементы, например

, содержимое сохраняется, однако разметка игнорируется. Например, выполнение следующего кода:

06beKTTextFie1d. htm’]Text = »

Table cell text

«; приведет к выводу на экран такой строки без табличного форматирования: table cell text

Однако если не закрыть тег, весь последующий текст будет считаться частью этого тега и не отобразится на экране. Например, в результате следующей операции присваивания:

o6beKTTextField. html Text = «We all know that 5 < 20. that's obvious.";

приложение Flash Player выведет:

We all know that 5

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

oObeKTTextFie7d. htmlText = «We all know that 5 &lt: 20. That’s obvious.»;

Приложение Flash Player выведет текст:

We all know that 5 < 20. that's obvious.

Дополнительную информацию по включению исходного HTML-кода в текстовое поле можно найти по адресу http://moock. org/asdg/technotes/sourceInHtmlField/.

Руководство по actionscript. часть 5, стр. 104

Мы узнали, каким образом можно отформатировать текстовое поле с помощью класса TextFormat и разметки HTML. Теперь рассмотрим последний инструмент, предназначенный для форматирования текста, — класс Stylesheet.

Форматирование текста с помощью класса Stylesheet

Класс Stylesheet языка ActionScript применяется для форматирования текстовых полей с помощью таблиц стилей. Функциональность этого класса базируется на очень ограниченном подмножестве каскадных таблиц, описанных в рекомендации уровня 1 (CSS1) консорциума W3C.

& *t

^ I Для чтения этого раздела требуется понимание основных концепций языка CSS. Если м$ а * ВЬ| незнакомы с этим языком, перед продолжением прочитайте следующий вводный материал в язык CSS: http://www. w3.org^R/CSS21/intro. html и http://www. w3.org/MarkUp/ Guide/Style.

Однако имейте в виду, что язык ActionScript не поддерживает полный набор возможностей, рекомендованных консорциумом W3C.

Как описано в рекомендации по языку CSS консорциума W3C, таблица стилей — это набор правил, которые определяют представление документа. Каждое правило описывает стиль для определенного элемента в документе HTML или XML. Следующий код демонстрирует пример правила, которое задает шрифт красного цвета для элементов :

hi { color: #FF0000 }

Внутри данного правила селектор (hi) обозначает элемент, к которому применяется стиль. Блок объявления ({ color: #FF0000 }) содержит одно или более объявлений, описывающих стиль, который должен применяться к выбранному элементу. Каждое объявление (color: #FF0000) включает свойство стиля (color) и значение (#FF0000).

«V.

Названия селекторов не зависят от регистра символов, в отличие от имен свойств стиля.



Полезные ссылки
Случайные записи
  • 28.02.2011">Руководство по actionscript. часть 5, стр. 137
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 019
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 070
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.109
  • 15.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.53
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 068
  • 13.03.2011">Руководство по actionscript. часть 3, стр. 097
  • 02.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.125
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.100
  • 20.03.2011">Руководство по actionscript. часть 2, стр. 070
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 034
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 065
  • 05.03.2011">Руководство по actionscript. часть 5, стр. 017
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 030
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.11
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...