Руководство по actionscript. часть 5, стр. 136
Чтобы переопределить автоматическое форматирование, применяемое к новому текстовому вводу, выполните такую последовательность действий.
1. Перехватите ввод с помощью события TextEvent. TEXT_INPUT.
2. Вручную добавьте эквивалентный текст.
3. Примените форматирование к тексту, вставленному вручную.
Эта методика продемонстрирована в листинге 27.21, представляющем пример класса FormattedlnputDemo. Понять код вам помогут комментарии.
Листинг 27.21. Форматирование пользовательского ввода
package { import flash. display.*; import flash. text.*; import flash. events.*;
public class FormattedInputDemo extends Sprite { public function FormattedlnputDemo ( ) { // Создаем объекты TextFormat var boldFormat-.TextFormat = new TextFormat( ); boldFormat. bold = true;
var italicFormat:TextFormat = new TextFormat( ); italicFormat. italic = true;
// Создаем текстовое поле
var t:TextField = new TextField( );
t. text = «lunchtime»;
// Форматируем слово «lunch» с использованием курсива t. setTextFormatUtalicFormat. 0. 5);
// Форматируем слово «time», используя полужирное начертание t. setTextFormat(boldFormat. 5. 9); t. type = TextFieldType. INPUT;
// Регистрируем приемник для событий TextEvent. TEXT_INPUT // в объекте t
t. addEventLi stener(TextEvent. TEXT_INPUT. textInputLi stener);
// Добавляем текстовое поле в список отображения addChild(t);
}
// Вызывается всякий раз. когда пользователь пытается добавить // новый текст в объект t
private function textlnputListener (e:TextEvent):void { // Получаем ссылку на текстовое поле, получившее ввод var t:TextField = TextField(e. target);
// Предотвращаем добавление текста, введенного пользователем // в текстовое поле e. preventDefault( );
// Добавляем текст, введенный пользователем вручную. В этом случае // происходит немедленное обновление переменной text объекта // TextField. позволяя нам отформатировать новый текст внутри // данной функции.