Опубликован: 04.11.2006 | Доступ: свободный | Студентов: 4462 / 498 | Оценка: 4.46 / 3.96 | Длительность: 39:17:00
Урок 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 для обучения бесплатно?

Ольга Ремез
Ольга Ремез
Латвия, Рига
Светлана Ведяева
Светлана Ведяева
Россия, Саратов