textInput AS3, change, link, scroll — события TextField

На этом уроке мы рассмотрим два вопроса:

  1. textInput AS3, change, link, scroll — события TextField
  2. Дополнительная информация

У TextField также как и у других классов в ActionScript 3 есть ассоциируемые с ним события, которые позволяют осуществлять ответные действия при взаимодействии пользователя с текстовым полем. В дополнение к стандартным событиям типа click, TextField содержит еще 4 специальных события:

  • textInput
  • change
  • link
  • scroll

Каждое из этих событий представлено соответствующей постоянной (constant) из класса TextEvent:

  • TEXT_INPUT
  • CHANGE
  • LINK
  • SCROLL

Событие textInput AS3 срабатывает при наборе пользователем текста в поле ввода. Текст может вводиться с помощью клавиатуры, устройства преобразования голоса в текст или в результате операции копирования. Событие генерируется каждый раз при нажатии клавиши на клавиатуре компьютера.

Событие change вызывается в случае какого-либо изменения содержания текстового поля (input). Например, если пользователь вводит текст в поле, то после каждого нажатия клавиши срабатывает это событие. Это можно использовать, например, для копирования информации, введенной, пользователем из одного текстового поля в другое в режиме реального времени. В других языках программирования, в JavaScript например, это событие срабатывает только после того, как поле ввода текста выходит из режима «фокус» (focus). В ActionScript это событие генерируется после каждого нажатия клавишы на клавиатуре компьютера.

Событие link срабатывает в случае щелчка мышью на текстовой гиперссылке. При этом само текстовое поле должно быть в HTML-формате. Как это сделать мы рассмотрим в последующих уроках.

Событие scroll вызывается пользователем при использовании прокрутки для просмотра текста. В действительности, это событие срабатывает после завершения прокрутки, поэтому и использоваться оно должно только в тех случаях когда прокрутка завершена. Например, у Вас имеется на сайте документ – договор или соглашение – для загрузки пользователем. Вы можете использовать событие scroll для активации кнопки «загрузить» только после того, как пользователь прокрутит/просмотрит договор/соглашение до конца. Подобное побуждает пользователя, по крайней мере, если не прочитать, то просмотреть весь объем текста прежде чем совершить дальнейшие действия.

Работа с текстовыми событиями

Создайте поле для ввода текста (input text field) либо во Flash, либо с помощью ActionScript-кода (см. уроки «Создание поля для ввода текста во Flash CS5» и «Создание поля для ввода текста с помощью ActionScript 3.0»). Например:

var txtInputText:TextField = new TextField();
addChild(txtInputText);
txtInputText.type = TextFieldType.INPUT;
txtInputText.x = 150;  
txtInputText.y = 150;  
txtInputText.width = 250;
txtInputText.height = 50;
txtInputText.border = true;

Создайте динамическое текстовое поле (dynamic text field) либо во Flash, либо с помощью ActionScript-кода (см. уроки «Создание динамического текста во Flash CS5» и «Создание динамического текста с помощью ActionScript 3.0»). Например:

var txtDisplayText:TextField = new TextField();
addChild(txtDisplayText);
txtDisplayText.type = TextFieldType.DYNAMIC;
txtDisplayText.x = 250;  
txtDisplayText.y = 150;  
txtDisplayText.width = 250;  
txtDisplayText.border = true;

Добавьте слушатель события, назначив нужное событие. Например:

txtInputText.addEventListener(TextEvent.TEXT_INPUT, textHandler);

Создайте обработчик события. Например:

function textHandler(event:TextEvent):void

Поставьте фигурные скобки, внутри которых запишите инструкции для обработки после того как событие произойдет

{
    txtDisplayText.text = txtInputText.text;
}

Нажмите Ctrl + Enter. Запустится Flash Player.

Введите текст в поле для ввода текста (input). В результате введенный Вами текст продублируется в динамическом текстовом поле (dynamic).

textInput AS3, change, link, scroll — события TextField

Дополнительная информация

Оба события change и textInput AS3 срабатывают каждый раз после нажатия на клавишу клавиатуры. Очевидно, что в определенных ситуациях это может вызвать довольно большой поток информации в единицу времени когда, например, пользователь вводит много текстовой информации. Другой пример – Вы используете Flash для коммуникации с сервером.

Для того чтобы избежать подобной проблемы используйте событие click. То есть, после того, как пользователь введет нужную информацию, он нажмет на кнопку, которая запустит событие по передаче всей введенной информации одновременно.

Необходимо заметить, что пользователь не может вводить или изменять текстовую информацию в динамическом текстовом поле (dynamic text field), но способен ее выделять и копировать. Хотя и это действие тоже можно запретить, назначив свойству selectable значение false.