Опубликован: 04.11.2006 | Уровень: специалист | Доступ: платный
Урок 8:

Манипулирование данными

< Урок 7 || Урок 8: 1234 || Урок 9 >

Манипуляции со строками

До сих пор в этом уроке мы имели дело главным образом с числами. Теперь пришло время получше узнать методы объекта String, с которым вы познакомились в Уроке 4. При помощи этих методов можно найти в строке определенный символ, изменить регистр символов, "перевернуть" строку задом наперед и много чего еще.

Вот несколько наиболее часто используемых методов объекта String:

  • length Свойство объекта String, содержащее значение количества символов в строке. Пример: numCharacters = userName.length; – здесь значением numCharacters станет число символов в строковой переменной userName. Если userName имеет значение "Jobe", результат будет 4.
  • substr(start, length) Метод возвращает часть строки, основываясь на двух параметрах: стартовом индексе и длине (число символов, включая стартовый). Если параметр length не указан, то возвращается подстрока от стартового символа до конца строки. Пример: name.substr(1, 2) ; – если name имеет значение "Kelly", метод даст результат "el". Буква e имеет индекс 1, число 2 указывает, что подстрока должна включать два символа.
  • toLowerCase() Этот метод переводит все символы строки в нижний регистр. Пример: message.toLowerCase(); – если message имеет значение "Hello", то результатом будет "hello".
  • toUpperCase() Этот метод переводит все символы строки в верхний регистр. Пример: message.toUpperCase(); – если message имеет значение "Hello", то результатом будет "HELLO".

Примечание Как упоминалось в Уроке 4, свойство text экземпляров текстовых полей тоже рассматривается как экземпляр объекта String, а значит, к нему применимы и все методы этого объекта. Например, myTextField.text.toUpperCase(); переведет текст в текстовом поле myTextField в верхний регистр.

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

  1. Откройте madlibs1.fla из папки Lesson08/Assets.

В этом файле три слоя: Background, Text Fields и Actions. Слой Background содержит основное графическое оформление. В слое Text Fields находится пять текстовых полей для ввода, одно динамическое текстовое поле и кнопка Submit. А со слоем Actions мы сейчас поработаем.

Пять текстовых полей для ввода называются (сверху вниз) verb1, properNoun, verb2, adjective и noun. В них пользователь должен будет вводить слова (соответственно: первый глагол, имя собственное, второй глагол, прилагательное и существительное), из которых будет генерироваться предложение. Текстовое поле большего размера, расположенное в правой нижней части сцены, называется paragraph; в нем и будет отображаться составленное предложение.

  1. Откройте панель Действия, выделите кадр 1 слоя Actions и введите следующий скрипт:
function generate() {
}

Это – начало описания функции. Функция будет вызываться при нажатии кнопки Submit. В окончательном виде функция должна будет взять все введенные пользователем слова, изменить их при необходимости и составить с этими словами предложение.

  1. В описание функции generate() вставьте следующие четыре строки:
verb1.text = verb1.text.toLowerCase();
verb2.text = verb2.text.toLowerCase();
adjective.text = adjective.text.toLowerCase();
noun.text=noun.text.toLowerCase();

Эти четыре действия переводят текст, введенный в четыре текстовых поля, в нижний регистр – главным образом по соображениям грамматики (ни одно из этих полей не будет содержать ни собственных имен, ни слов, стоящих в предложении на первом месте).

  1. После строки noun.text=noun.text.toLowerCase(); вставьте следующий скрипт:
properNoun.text = properNoun.text.substr(0,1).toUpperCase() + 
properNoun.text.substr(1).toLowerCase();

В этом скрипте properNoun.text есть ссылка на текст в поле properNoun; это поле должно содержать чье-то имя. Поэтому в этой строке первая буква (символ с индексом 0) должна быть заглавной, а остальные – строчными. Чтобы обеспечить это наверняка, мы применяем метод substr(). Как видите, он используется в нашем выражении дважды. Сначала properNoun.text.substr(0,1) возвращает строку, состоящую из одной первой буквы значения properNoun.text, которая переводится в верхний регистр методом toUpperCase(). Во второй половине выражения также использован метод substr(), но на сей раз подстрока берется, начиная со второй буквы (символ с индексом 1). Поскольку длина (второй параметр метода substr() ) не указана, в подстроку войдут все символы до конца строки. Полученное в результате строковое значение переводится в нижний регистр методом toLowerCase(). Наконец, обе полученные строки объединяются оператором конкатенации. Таким образом, если пользователь может ввести хоть "kelly", хоть "kElLy" – в результате выполнения нашего выражения все равно получится "Kelly".


  1. Добавьте в функцию generate() последнюю строку:
paragraph.text = "You " + verb1.text + " into love with " + properNoun.text +
  " when you " + verb2.text + " "+ properNoun.text + " eating a " +
    adjective.text + " " + noun.text + ".";

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

Совет Объединяя несколько строковых значений, будьте внимательны, не забывайте заключать каждое значение в кавычки. Стоит пропустить кавычки хотя бы в одном месте, и результат будет ошибочный. Явные ошибки панель Действия сможет обнаружить и показать вам строку, в которой присутствует синтаксическая ошибка.

  1. Выделите кнопку Submit и присоедините к ней следующий скрипт:
on (release, keyPress "<Enter>") {
  generate();
}

При нажатии этой кнопки или клавиши Enter будет вызвана написанная нами функция generate().

  1. Выполните команду Управление > Проверить фильм (Control > Test Movie).

Введите текст в каждое из полей для ввода, затем нажмите кнопку Submit, и посмотрите, что за предложение получилось. Попробуйте сделать это еще раз, при вводе перемешивая заглавные и строчные буквы. Как видите, манипулировать строками в ActionScript совсем не трудно.

  1. Закройте тестовый фильм и сохраните свою работу в файл madlibs2.fla.

Вы кое-что узнали о применении методов объекта String, а это важный аспект ActionScript, ведь играет важную роль во многих проектах, и вам совершенно необходимо уметь им манипулировать. В этом разделе вы познакомились лишь с основами, но в ходе этого учебного курса вам встретится еще немало примеров управления текстовой информацией в проектах.

< Урок 7 || Урок 8: 1234 || Урок 9 >
Евгений Стародубцев
Евгений Стародубцев

Вот задание:

7. Открыв панель Действия (Actions) и установив ее в Экспертный режим(Expert Mode), выделите кадр 1 слоя Actions и введите следующий скрипт:

Галина Кузнецова
Галина Кузнецова

Добрый день.

Можно ли получить среду Flash для обучения бесплатно?

Евгения Дегтяренко
Евгения Дегтяренко
Украина, Запорожье
Анна Елисеева
Анна Елисеева
Россия, Великий Новгород, Ногородский государственный университет имени Ярослава Мудрого, 2003