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

Hello world, how are you?

Рис. 27.9. Перемещаемая нижняя граница

^ I Чтобы создать текстовое поле с перемещаемой нижней границей и фиксированной м? j* шириной, присвойте переменной autoSize любое значение, отличное от значения TextFieldAutoSize. NONE, а переменной wordwrap присвойте значение true.

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

По умолчанию приложение Flash Player не отображает повернутые или искаженные текстовые поля на экране. Например, если мы хотим добавить следующее текстовое поле в список отображения, текст «Hello world» не появится на экране, поскольку поле повернуто:

var t:TextField = new TextField( );

t. text = «Hello world»;

t. rotation = 30; // Поворачиваем текст

Подобным образом, если мы захотим добавить следующее текстовое поле в список отображения, текст «Hello world» не появится на экране, поскольку поле искажено:

var t:TextField = new TextFieldC ); t. text = «Hello world»;

t. transform. matrix = new Matrixd, 1, 0, 1); // Искажаем текст

Кроме того, по умолчанию Flash Player для отображения всех текстовых полей использует полную непрозрачность, даже если для них устанавливается уровень прозрачности через переменную экземпляра alpha класса TextField. Например, если бы мы хотели добавить следующее текстовое поле в список отображения, на экране текст «Hello world» оказался бы полностью непрозрачным, хотя уровню канала Alpha данного поля установлено значение 20 %:

var t:TextField = new TextField( ); t. text = «Hello world»; t. alpha = .2;

Приложение Flash Player правильно отображает только те повернутые, искаженные и прозрачные текстовые поля, которые используют встраиваемые шрифты. Информацию о визуализации текста с использованием встраиваемых шрифтов можно найти далее, в разд. «Шрифты и отображение текста».

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

Изменение содержимого текстового поля

После того как текстовому полю будет присвоено текстовое содержимое, это содержимое можно изменить через переменную text. Например, следующий код создает объект TextField и присваивает его текстовому содержимому строку «Hello»:

var t:TextField = new TextFi eld( ); t. text = «Hello»;

Следующий код полностью заменяет текст объекта t строкой «Goodbye»: t. text = «Goodbye»;

Чтобы добавить новый текст к существующему содержимому текстового поля (вместо того чтобы полностью заменять текст в текстовом поле), мы используем либо метод экземпляра appendText ( ) класса TextField, либо оператор +=. Например, следующий код добавляет строку «…hope to see you again! » к тексту «Goodbye»:

t. appendText(«…hope to see you again 1″);

После выполнения предыдущей строки кода переменная t. text будет иметь такое значение:

«Goodbye…hope to see you again!»

Для добавленного текста используется форматирование последнего символа в текстовом поле, а любой существующий текст сохраняет свое первоначальное форматирование. Если в момент вызова функции appendText ( ) текстовое поле не содержит никакого текста, добавляемый текст будет отформатирован в соответствии с текстовым форматом, используемым по умолчанию для данного текстового поля.

^ 1 Информацию по форматированию текста и текстовому формату, используемому по умол-

_W

чанию, можно найти в следующем разд. «Форматирование текстовых полей».

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

Следующий код, как и предыдущий, добавляет новый текст в конец существующего текста в текстовом поле, но делает это не с помощью метода appendText ( ), а с помощью оператора +=:

t. text += » Come again soon.»;

В отличие от метода appendText ( ), оператор += сбрасывает форматирование для всего текста в поле, устанавливая формат, используемый по умолчанию. Кроме того, оператор гораздо медленнее метода, поэтому следует избегать его использования.

Чтобы заменить некоторую последовательность символов в текстовом поле новой последовательностью, мы используем метод экземпляра replaceText( ) класса TextField, который имеет следующий обобщенный вид:

объектТехЬПе! с1. гер~\асеТехКиндексНачала, индексКонца, новыйТекст)

Метод replaceText ( ) удаляет символы в объекте 0бъектТехЬПе1с1, начиная с индекса индексНачала и заканчивая индексом индексКонца-l, и заменяет их текстом новыйТекст. Новое объединенное значение сохраняется в переменной oObeKTTextField. text.

Например, следующий код заменяет символы «bed» в тексте «abede» новым текстом «х»:

var t:TextField = new TextField( );

t. text = «abede»; t. replaceTextd, 4, «x»); trace(t. text); // Выводит: axe

Если значения индексНачала и индексКонца равны, то строка новыйТекст вставляется непосредственно перед указанным индексом индексНачала. Например, следующий код вставляет символ «s» непосредственно перед символом «t»:

var t:TextField = new TextField( ); t. text = «mat»; t. replaceText(2, 2, «s»); trace(t. text); // Выводит: mast

I В оставшейся части этого раздела рассматриваются вопросы форматирования, относящие А з ся к методу replaceText(), и для чтения последующего материала необходимо понимание Я?»’ методик форматирования текста, рассматриваемых в следующем разделе.

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

Форматирование текста, вставляемого через метод replaceText ( ), зависит от указываемых значений для параметров индексНачала и индексКонца. Если значения отличаются, то вставляемый текст использует форматирование символа, следующего за вставляемым текстом (то есть символа в позиции индексКонца). Любой существующий текст сохраняет свое первоначальное форматирование. Например, рассмотрим следующий код, который создает текстовое поле, отображающее слово «lunchtime*», при этом символы «time» отформатированы с использованием полужирного шрифта:

var boldFormat:TextFormat = new TextFormat( );

boldFormat. bold = true;

var t:TextField = new TextField( );

t. text = «lunchtime»;

t. setTextFormat(boldFormat, 5, 9); // Выделяем слово «time»

// полужирным шрифтом

Результатом выполнения этого кода является строка:

lunchtime

Теперь мы воспользуемся методом replaceText ( ), чтобы заменить слово «lunch» словом «dinner», как показано ниже:

t. replaceText(0, 5, «dinner»); 4 // Заменяем слово «lunch» словом «dinner»

В итоге слово «dinner» будет отформатировано с использованием полужирного шрифта, что соответствует форматированию символа в позиции индексКонца ( » t»). Результат выглядит следующим образом:

dinnertime

Чтобы вместо существующего формата текстового поля использовать новый формат для вставляемого текста, мы присваиваем новый текст с помощью метода replaceText ( ), а затем сразу же присваиваем желаемый формат этому тексту. Например, следующий код снова заменяет слово «lunch» словом «dinner», но на этот раз к новому добавленному тексту также применяется форматирование:

t. replaceText(0, 5. «dinner»); // Заменяем слово «lunch» словом «dinner» var regularFormat;TextFormat = new TextFormat( ); regularFormat. bold = false;

t. setTextFormat(regularFormat, 0, 6); // Отменяем форматирование полужирным

// шрифтом слова dinner

Результат выполнения предыдущего кода выглядит следующим образом: dinnertime

Когда оба аргумента индексНачала и индексКонца метода replaceText ( ) равны О, текст вставляется в начало текстового поля, а для форматирования вставляемого текста применяется используемый по умолчанию формат данного поля. Первоначальное форматирование любого существующего текста сохраняется.

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

Когда аргументы индексНачала и индексКонца равны, и при этом их значения больше 0, для форматирования вставляемого текста используется формат символа, непосредственно предшествующего вставляемому тексту (то есть символа в позиции индексКонца-1). Первоначальное форматирование любого существующего текста сохраняется. Например, следующий код снова создает текстовое поле, которое отображает слово «lunchtime», применяя полужирный шрифт для слова «time»:

var boldFormat:TextFormat = new TextFormatC );

boldFormat. bold = true:

var t:TextField = new TextField( ):

t. text = «lunchtime»;

t. setTextFormat(boldFormat, 5, 9); // Выделяем слово «time»

// полужирным шрифтом

На этот раз мы вставляем текст «break» сразу после символа «t»:

t. replaceText(5, 5, «break»); // Вставляем слово «break» после символа «t»

Поскольку символ в позиции индексКонца-1 («h») не отформатирован с использованием полужирного шрифта, для слова «break» полужирный шрифт применяться не будет, а результат выполнения предыдущего кода будет выглядеть следующим образом:

lunchbreaktime

Теперь ближе познакомимся с методиками форматирования текста.

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

Форматирование текстовых полей

Язык ActionScript предоставляет три различных инструмента для форматирования текста: класс flash. text. TextFormat, разметку HTML и класс flash. text. Stylesheet. Все три инструмента позволяют управлять следующими вариантами форматирования абзацев и символов, но используют различный синтаксис.

Форматирование на уровне абзацев — выравнивание, отступы, маркеры, высота строки (интервал между строками), шаг табуляции.

Форматирование на уровне символов — гарнитура, размер, вес шрифта (полужирный или обычный), цвет, стиль шрифта (курсив или обычный), кернинг, расстояние между буквами (трекинг), подчеркивание текста, гипертекстовые ссылки.

Форматирование на уровне абзацев применяется ко всему абзацу, при этом абзац определяется как часть текста, ограниченная разрывами строки (\n,

или ). В отличие от этого, форматирование на уровне символов применяется

к произвольным последовательностям отдельных символов, ограниченным индексами в тексте или тегами HTML или XML.

Класс TextFormat предоставляет точное программное управление над форматированием текста и обычно используется для динамической генерации текстового вывода. Класс Stylesheet помогает отделить инструкции форматирования от содержимого, к которому применяется данное форматирование, и обычно применяется при форматировании больших блоков содержимого HTML или XML. Инструкции форматирования языка HTML предлагают простой, интуитивно понятный способ форматирования текста, но загрязняют текстовое содержимое разметкой. Разметка HTML обычно используется в тех случаях, когда удобство важнее гибкости, как, возможно, при форматировании текста в прототипе приложения или форматировании небольших фрагментов текста, которые гарантированно не будут изменяться в течение проекта.

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

В следующих разделах рассматриваются вопросы общего использования объектов TextFormat и Stylesheet, а также разметки HTML. Каждый раздел содержит примеры распространенных операций форматирования. Подробное описание каждого отдельного параметра форматирования можно найти в следующих разделах справочника по языку ActionScript корпорации Adobe:

? класс TextFormat;

? переменная экземпляра htmlText класса TextField;

? класс Stylesheet.

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

Присваивание значения переменной text объекта TextField приводит к удалению любого пользовательского форматирования, связанного с этим полем. Чтобы добавить текст в поле, сохранив его текущее форматирование, используйте метод экземпляра replaceText() класса TextField.

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

Общий процесс форматирования текста с использованием класса TextFormat заключается в следующем.

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

2. Установить переменные объекта TextFormat, отражающие желаемое форматирование.

3. Применить форматирование к одному символу или более, используя метод экземпляра setTextFormat ( ) класса TextField.

Применим перечисленные шаги на примере. Наша цель — отформатировать весь текст в поле, используя шрифт Arial размером 20 пунктов с полужирным начертанием.

В языке ActionScript все размеры шрифтов указываются в пикселах. Если шрифт имеет размер 20 пунктов, это интерпретируется приложением Flash Player как 20 пикселов.

А*_

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

var t:TextField = new TextField( ); t. text = «ActionScript is fun!»; t. autoSize = TextFieldAutoSize. LEFT;

Далее создадим объект TextFormat:

var format:TextFormat = new TextFormat( );

Затем присвоим переменным font, size и bold созданного объекта TextFormat желаемые значения: «Arial», 20 и true, как показано в следующем коде:

format. font = «Arial»; format. size = 20; format. bold = true;

Вместе переменные объекта TextFormat описывают стиль форматирования, который может быть применен к некоторому символу или последовательности символов. Доступные переменные перечислены в следующем подразд. «Доступные переменные класса TextFormat».

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

После создания объекта TextFormat и присваивания значений его переменным мы можем применять его для форматирования некоторого символа или последовательности символов с помощью метода setTextFormat ( ), который имеет следующий вид:

0бъектТехЬПе1с1.setTextFormat (обьекг7ех? Рогш?, индексНачала, индексКонца)

В приведенном обобщенном коде oObeKTTextField — это текстовое поле, текст которого будет отформатирован, a oObeKTTextFormat — объект TextFormat, содержащий инструкции форматирования. Параметр индексНачала — это необязательное целое число, обозначающее индекс первого символа, который будет отформатирован с помощью объекта oObeKTTextFormat. Параметр индексКонца — это необязательное целое число, обозначающее индекс символа, следующего за последним символом, который будет отформатирован с помощью объекта обь-eKTTextFormat.

Когда указаны оба аргумента индексНачала и индексКонца, метод setTextFormat ( ) форматирует последовательность символов, начиная с индекса индексНачала и заканчивая индексом индексКонца-1, в соответствии со значениями переменных объекта oObeKTTextFormat. Когда аргумент индексНачала указан, а аргумент индексКонца — нет, метод setTextFormat ( ) форматирует один символ с индексом индексНачала в соответствии со значениями переменных объекта oObeKTTextFormat. Когда не указан ни аргумент индексНачала, ни аргумент индексКонца, метод setTextFormat ( ) форматирует все символы в объекте oObeKTTextFieldв соответствии со значениями переменных объекта oObeKTTextFormat. Любая переменная объекта o6beKTTextFormat, которой присвоено значение null, не влияет на форматирование целевой последовательности

символов (существующее форматирование, определяемое данной переменной, сохраняется).

Попробуем использовать метод setTextFormat ( ), чтобы отформатировать символы в нашем тестовом текстовом поле t. Вот этот код:

t. setTextFormat(format);

Для обзора в листинге 27.5 приведен весь код, необходимый для форматирования всех символов в текстовом поле с использованием шрифта Arial размером 20 пунктов полужирного начертания.

Листинг 27.5. Форматирование текстового поля

// Создаем текстовое поле var t:TextField = new TextFieldC ); t. text = «ActionScript is fun!»; t. autoSize = TextFieldAutoSize. LEFT;

// Создаем объект TextFormat и устанавливаем значения его переменных var format:TextFormat = new TextFormat( ); format. font = «Arial»; format. size = 20; format. bold = true;

// Применяем форматирование t. setTextFormat(format);

Результат выполнения кода из листинга 27.5 проиллюстрирован на рис. 27.10.

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

ActionScript is fun! Рис. 27.10. Текст, отформатированный с помощью объекта TextFormat

Теперь предположим, что мы хотим отформатировать весь текст в поле с помощью шрифта Arial размером 20 пунктов, но при этом хотим, чтобы полужирным шрифтом было выделено только слово fun. Нам потребуется два объекта TextFormat: один для общих настроек шрифта и один для шрифта полужирного начертания. Этот код показан в листинге 27.6 (обратите внимание на использование аргументов индексНачала и индексКонца во втором вызове метода setTextFormat ( )):

Листинг 27.6. Два формата

// Создаем текстовое поле var t:TextField = new TextField( ); t. text = «ActionScript is fun!»; t. autoSize = TextFieldAutoSize. LEFT;

// Создаем объект TextFormat для общих настроек шрифта var fontFormat:TextFormat = new TextFormat( ); fontFormat. font = «Arial»; fontFormat. size = 20;

// Создаем объект TextFormat для настроек шрифта полужирного начертания var boldFormat:TextFormat = new TextFormat( );

boldFormat. bold = true;

// Применяем общие настройки шрифта ко всему текстовому полю t. setTextFormat(fontFormat);

// Применяем настройки шрифта полужирного начертания только к слову fun t. setTextFormat(bol dFormat. 16, 19):

Стоит отметить, что последовательное форматирование не является деструктивным; изменения в форматировании касаются только установленных переменных, поэтому во втором вызове метода setTextFormat ( ) слово fun сохраняет свою гарнитуру шрифта (Arial) и размер (20) и приобретает полужирное начертание.

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

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

Доступные переменные класса TextFormat

В табл. 27.3 и 27.4 перечислены переменные класса TextFormat, применяемые для форматирования на уровне символов и абзацев. Подробные сведения о каждой переменной можно найти в описании класса TextFormat в справочнике по языку ActionScript корпорации Adobe.

В табл. 27.3 перечислены переменные класса TextFormat, используемые для установки параметров форматирования на уровне символов.

Таблица 27.3. Переменные класса TextFormat для форматирования на уровне символов

Переменная Описание

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

color Указывает цвет символа в виде 24-битного целого числа (например, OxFFOOOO)

font Задает шрифт

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

kerning Тип Boolean. Задает, нужно ли использовать автоматический кернинг для пар символов

letterSpacing Указывает расстояние между буквами (трекинг), в пикселах

size Задает размер шрифта, в пунктах (1/72 дюйма)

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

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

url Определяет гипертекстовую ссылку

В табл. 27.4 перечислены переменные класса TextFormat, используемые для установки параметров форматирования на уровне абзацев.



Полезные ссылки
Случайные записи
  • 05.08.2010">Навигационный блок: лучшее расположение
  • 11.03.2011">Руководство по actionscript. часть 3, стр. 146
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.77
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.39
  • 17.08.2010">Страничка со списком услуг
  • 27.08.2011">Размещение сервера в датацентре
  • 25.03.2010">Великолепная инфографика на 5+
  • 01.03.2011">Руководство по actionscript. часть 5, стр. 129
  • 17.03.2011">Руководство по actionscript. часть 2, стр. 138
  • 19.03.2011">Руководство по actionscript. часть 2, стр. 088
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 073
  • 11.11.2012">Фотокнига от Принт-а-Тет
  • 05.03.2011">Руководство по actionscript. часть 5, стр. 001
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 059
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.41
Опрос

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

View Results

Loading ... Loading ...