Скачать 1.52 Mb.
|
О классе TextFormatКогда Вы создаете текстовое поле с помощью инструмента Text во Flash CS5, то его форматирование осуществляется довольно просто – в панели Свойства Вы указываете нужные значения для определенных свойств. Когда же форматирование осуществляется с помощью кода, то для этих целей Вы должны использовать экземпляры классаTextFormat. Свойства класса TextFormatКласс TextFormat содержит в себе набор свойств для хранения информации о форматировании, которую Вы собираетесь применить к текстовому полю. Давайте перечислим их все, а затем рассмотрим по порядку каждый из них: align, blockIndent, bold, bullet, color, font, indent, italic, kerning, leading, leftMargin, letterSpacing, rightMargin, size, tabStops, target, underline, url. alignОсуществляет выравнивние текста внутри текстового поля. Значением этого свойства может быть одна из постоянных (constant) класса TextFormatAlign. Например: txtBookTitle.align = TextFormatAlign.LEFT; blockIndentСдвигает все строки от левой границы текстового поля на указанное число пикселов. txtBookDiscription.blockIndent = 15; boldДелает текст в указанном текстовом поле "жирным" (аналогично тегу strong в HTML). Может принимать значения true, false и null (аналогичен false). txtBookTitle.bold = true; bulletИспользуется при создании списков для визуального выделения каждого пункта списка. Корректные значения: true, false и null (аналогичен false). txtAuthorsList.bullet = true; colorУстанавливает цвет текста, отображаемого в текстовом поле. Значение должно быть определен в системе hexidecimal. В ActionScript это записывается следующим образом:
В значении обязательно должны быть указаны все 6 цифр (укороченное определение значения цвета в стиле CSS в ActionScript не поддерживается!, а также "именные" цвета типа red или blue). Также поддерживается значение цвета null, при котором цвет будет показан черным. txtBookTitle.color = 0xFF0000; fontНазначает шрифтовую гарнитуру для текста в текстовом поле (TextFiled). Имя шрифта записывается в кавычках, т.е. в строковом формате. txtBookTitle.font = "Verdana"; indentСдвигает влево на указанное количество пикселов первую строку в текстовом поле. Значение указывается в виде числа. Пикселы это единственная разрешенная единица, которая здесь используется. Заметьте также, что indent сдвигает влево только первую строку, тогда как blockIndent все строки текстового поля. txtBookDiscript.indent = 20; italicДелает текст наклонным (italic). Используемые значения: true, false и null (аналогичен false). txtBookTitle.italic = true; kerningВ типографике термин кернинг используется для определения межбуквенного просвета. В ActionScript Вы не сможете настраивать ширину между определенными парами букв. Все что доступно для корректировки так это установка значения этого свойства как true, false или null (аналогичен false). Это свойство будет работать только с длинными кусками текста и со встроенными шрифтами в конечный swf-файл. Применяется к парам букв, которые ухудщают читабельность текста. txtBookDiscript.kerning = true; leadingИспользуется для настройки/регулировки межстрочного расстояния в строковом поле. Присваиваемые значения могут записываться либо как число, либо как null, который приводит значение свойства к нулю (0). Необходимо заметить, что значения null и 0 (ноль) не "удаляют" кернинг, а приводят его к значению по умолчанию, т.е. нормальному. txtBookDiscript.leading = 18; leftMargin и rightMarginУстанавливают расстояние от левой и правой границ текстового поля, соответственно, до текстового абзаца, который туда помещен. Значение записывается в виде числа (Number) и подразумевает количество пикселов. Если пи этом используются свойства indent или blockIndent, то расстояние увеличивается и на величину, указанную и для этих свойств. txtBookDiscript.leftMargin = 15; letterSpacingРегулирует межбуквенное расстояние в тексте, помещенном в текстовое поле. Значение записывается в виде числа (количество пикселов). Применяется ко всему тексту в целом, в отличие от kerning, где регулируется расстояние только между "проблемными" парами букв. В качестве значений для letterSpacing можно использовать десятичные числа. txtBookDiscript.letterSpacing = 1,5; sizeНазначает размер (высоту) шрифта в пикселах. Значение данного свойства записывается только в виде числа. txtBookTitle.size = 16; tabStopsЗначением для данного свойства является массив положительных чисел. Если во время набора текста использовалась табуляция, то в текстовом поле она будет отражена, а значениями для нее будут взяты из массива. По умолчанию значение свойства tabStops равно 4. targetЭто свойство используется тогда, когда текст является ссылкой, а Flash Player воспроизводит клип, внедренный в HTML-документ в браузере. Значение _self заставит прилинкованный документ открыться в том же самом окне, что и текущий документ. Значение _blank откроет прилинкованный документ в новом окне браузера. underlineТекст помещенный в текстовое поле будет отображаться как подчеркнутый. Используемые значения: true, false и null (аналогичен false). txtAuthorName.underline = true; urlОпределяет URL в виде строки (String) для текста, помещенного в текстовое поле. Если URL назначен для пустой строки или со значением null, то текст будет отображаться без подчеркивания – стандартное выделение для ссылок. Кроме того, текстовое поле, к которому применяется данное свойство уже должно быть со "включенным" свойством htmlFormat (значения: true, false и null). txtBookTitle.htmlFormat = true; txtBookTitle.url = "http://uroki-flash-as3.ru"; Класс TextFormat AS3. Форматирование текстового поляВ ActionScript 3 прежде чем начать форматирование текстового поля Вы должны создать экземпляр класса TextFormat AS3. Для этого декларируйте переменную с типом данных TextFormat и вызовите конструктор класса. var tfMyText:TextFormat = new TextFormat(); Затем начинайте форматирование Вашего текста, используя свойства класса TextFormat AS3. Назначайте этим свойствам такие значения, которые необходимы. Например: tfMyText.font = "Verdana"; tfMyText.color = 0x333333; После создания экземпляра класса TextFormat и назначения его свойствам определенных величин, необходимо применить все это к текстовому полю. У экземпляров класса TextField для этих целей существует метод setTextFormat, который принимает в качестве аргумента имя экземпляра класса TextFormat. Например, к экземпляру текстового поля с именем myText Вы можете применить форматирование, содержащееся в экземпляре tfMyText класса TextFormat AS3 следующим образом: myText.setTextFormat(tfMyText); Форматирование текстового поляСоздание экземпляра класса TextFormat AS3Создайте переменную с типом данных TextFormat var tfNameFormat:TextFormat = new TextFormat(); Назначьте шрифтовую гарнитуру tfNameFormat.font = "Times New Roman"; Определите размер шрифта tfNameFormat.size = 14; Назначьте цвет шрифта tfNameFormat.color = 0x222222; Создание экземпляра класса TextFieldСоздайте текстовое поле var txtPicName:TextField = new TextField(); Поместите нужный текст в созданное текстовое поле txtPicName.text = "Образец картинки"; Определите положение текстового поля по оси х txtPicName.x = 150; Определите положение текстового поля по оси y txtPicName.y = 150; Добавьте текстовое поле на сцену (stage) addChild(txtPicName); Применение форматирования и просмотр результатовПримените форматирование (экземпляр класса TextFormat с именем tfNameFormat) к текстовому полю с именем txtPicName txtPicName.setTextFormat(tfNameFormat); В редакторе кода программы Adobe Flash CS5 все выше написанное выглядит так Нажмите Ctrl + Enter. Фильм начнет воспроизводиться. Текст будет отображаться в текстовом поле с заданным форматированием. Дополнительная информацияНачинающие изучать программирование на языке Actionscript часто удивляются следующему: зачем нужно проделывать такую большую работу по созданию форматирования таким способом и думают, что гораздо легче было бы сделать свойства (font, color, size и пр.) частью класса TextField и в результате применять их напрямую к созданному текстовому полю вместо того, чтобы делать все эти дополнительные шаги по созданию экземпляра класса TextFormat AS3. И они будут правы, но лишь отчасти. Дело в том, что в большинстве случаев форматирование применяется не к одному текстовому полю, а к нескольким. Представьте себе коммерческий веб-сайт, на котором размещена информация о каком-то продукте или изделии. Скорее всего, для лучшего восприятия такой информации она будет размещена на нескольких текстовых полях как например: имя продукта, его размер/габариты, цена, другие детали. И если Вы хотите чтобы информация о цене продукта, его размерах и пр. была отформатирована в едином стиле, то, согласитесь, сделать это гораздо проще и быстрее, используя экземпляр класса TextFormat, чем применяя это форматирование к каждому пункту отдельно. HTML TextField AS3. HTML-форматирование текста в текстовом поле Форматирование посредством экземпляра класса TextFormat позволяет форматировать ВЕСЬ текст в выбранном текстовом поле, но это, к сожалению, не дает возможности форматировать отдельные абзацы, предложения, слова и буквы. Для того чтобы это осуществить Вам необходимо сделать гипертекстовую разметку такого текста (HTML TextField AS3). Текстовые поля в ActionScript 3 поддерживают небольшой набор тэгов HTML 1.0, которые Вы можете использовать внутри них. В большинстве случаев это тэги, эквивалентные по своему значению свойствам класса TextFormat. Например, класс textFormat содержит свойство url для создания гиперссылки; в HTML ту же задачу решает тэг . Кроме того, для того чтобы сделать текст жирным используется тэг , наклонным – , в виде списка – , создания нового абзаца – . В большинстве случаев, атрибуты для вышеперечисленных тэгов поддерживаются в ActionScript точно также как и в HTML. Например, Для определения цвета шрифта достаточно записать следующее: Для того чтобы применить форматирование HTML TextField AS3 в ActionScript Вы должны добавить текст в текстовое поле с помощью свойства htmlText, а не с помощью стандартного text. Если Вы попытаетесь использовать оба свойства, то «сработает» только text. HTML TextField AS3. HTML-форматирование текста в текстовом поле Создайте текстовое поле var txtInfo:TextField = new TextField(); Добавьте это поле на сцену (stage) addChild(txtInfo); Назначьте ширину для этого текстового поля txtInfo.width = 200; Задайте автоматическое определение размеров для созданного текстового поля txtInfo.autoSize= TextFieldAutoSize.LEFT; Если необходимо включите свойство для поддержки многострочного текста txtInfo.multiline = true; Декларируйте переменную с типом данных String, которая включает в себя HTML-форматирование var info:String = " Фамилия: Иванов Должность: директор "; Поместите переменную info в текстовое поле, используя свойство htmlText txtInfo.htmlText = info; Весь код, набранный выше, отобразится во Flash CS5 так: Haжмите Ctrl + Enter. Ролик запустится. Отформатированный текст появится на экране монитора. Дополнительная информация Flash Player также поддерживает специальные символы. Вы наверняка знаете, что для гипертекстовой разметки страниц используются определенные символы, такие как, например, " < " и " > ", " / " и " ! " и т.д. Нельзя, используя форматирование (HTML TextField) записать математическую формулу 6 < 10, т.к. при обработке броузером HTML-кода символ «меньше» будет принят за символ, открывающий тэг и произойдет ошибка. Вместо этого Вам нужно использовать следующую запись < Flash поддерживает следующие специальные символы:
Любые тэги языка HTML, которые не поддерживаются Flash Player'ом будут проигнорированы. Например, если Вы захотите вставить таблицу в текстовое поле и запишите следующий код
то все тэги, которые не распознаются Flash Player'ом |