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

Использование условной логики

< Урок 8 || Урок 9: 1234567 || Урок 10 >

Оператор if/else if

Оператор if/else if ("если/иначе, если") схож с базовым оператором if, который мы только что обсуждали, но отличается тем, что позволяет задать несколько условий с разной реакцией на них. Рассмотрим пример:

if (money > 500) {
  buyTV("35 inch");
} else if (money > 300) {
  buyTV("27 inch");
}

Данный скрипт выполняет различные действия в зависимости от значения переменной money. Если ее значение больше 500, вызывается функция buyTV() со значением аргумента "35 inch". Если money меньше 500, эта часть игнорируется и проверяется следующее условие: если значение money больше 300, функция вызывается buyTV() со значением аргумента "27 inch". Таким образом, если бы переменная money имела значение 450, то первая секция оператора была бы проигнорирована (450 не больше, чем 500), но вторая секция была бы выполнена (поскольку 450 больше, чем 300). Если же значение money меньше 300, то обе секции будут проигнорированы.

Оператор if/else if может содержать (при необходимости) много секций, реагируя на десятки различных условий.

Оператор if/else

Оператор if/else ("если/иначе") позволяет запрограммировать действия, которые должны выполняться, если ни одно из заданных в операторе условий не выполняется. Возьмем такой пример:

if (money > 500) {
  buyTV("35 inch");
} else if (money > 300) {
  buyTV("27 inch");
} else {
  workOvertime ();
}

В этом скрипте, если money имеет значение меньше 300, и, стало быть, не удовлетворяет ни одному из условий, вступает в действие секция else – если перевести синтаксис на русский язык, получится следующее:

если (это верно) {
  // выполнить это
} иначе, если (это верно) {
  // выполнить это
} иначе, если не верно ни то, ни другое {
  // выполнить это
}

Другие условные операторы

Конструкции с использованием операторов if и else составляют основу условной логики в ActionScript. Однако этот способ не единственный; в некоторых случаях такие конструкции могут с успехом заменить другие условные операторы, и при этом сам текст программы может оказаться более простым и понятным.

Оператор switch способен послужить заменой конструкции if/else. Он очень удобен, если имеется некий набор точных значений, которым должны соответствовать те или иные действия. Вот как выглядит конструкция с использованием этого оператора:

switch (favoriteBand) {
case "Beatles":
  gotoAndPlay("Beatles");
  break;
case "U2":
  gotoAndPlay("U2");
  break;
default:
  gotoAndPlay("Slim Whitman");
}

Первым делом вычисляется выражение (чаще всего это просто переменная) в первой строке, в скобках. Затем значение этого выражения (или переменной) поочередно сравнивается со значением в каждой из секций case. Если в одной из секций найдено совпадение, выполняется блок действий, относящийся к данной секции, если совпадений не встретилось – выполняется секция default (в конце). В конце блока каждой из секций case ставится break, чтобы прекратить перебор секций, если совпадение найдено. Значениями, которые указываются в секциях case, могут быть строки (как в примере), числа и булевы значения. Впрочем, для булевых значений (их ведь всего два – true и false ) гораздо лучше подойдет следующий вариант условного оператора.

Тернарный (или троичный) оператор – ?: – позволяет записать простейшую конструкцию if/else в одну строку. Например:

myMood = (money > 1000000) ? "Happy" : "Sad";

Если условие в скобках дает результат true, то переменной myMood будет присвоен результат первого выражения (в нашем случае – значение "Happy" ), если false – второго выражения (в нашем случае "Sad" ). Таким образом, мы записали в одну строку то, что с использованием оператора if выглядело бы так:

if (money > 1000000) {
  myMood = "Happy";
} else {
  myMood = "Sad";
}

А вот усовершенствованный пример использования тернарного оператора:

myMood = "I’m " + (money > 1000000) ? "happy" : "sad";

В этом примере переменная myMood получит значение либо "I’m happy", либо "I’m sad" – в зависимости от того, больше ли значение money, чем 1000000 или нет.

Тернарный оператор часто применяется для "переключения" переменных, имеющих два состояния (значения). Например:

playSound = (playSound) ? false : true;

Каждый раз при выполнении этой строки скрипта значение переменной playSound будет изменяться с true на false либо с false на true.

Выбор условий

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

  • Один объект входит в контакт с другим объектом
  • Что-либо включается или выключается
  • Положение, размер или другое свойство фильма-символа достигает определенного значения (или становится больше этого значения, или меньше)
  • Пользователь выполнил определенные действия с мышью или клавиатурой
  • Сравнение двух числовых или текстовых значений
  • Различные комбинации перечисленных ситуаций
< Урок 8 || Урок 9: 1234567 || Урок 10 >
Салтанат Бектегенова
Салтанат Бектегенова

Дострочное пересдача экзамена

 

Евгений Стародубцев
Евгений Стародубцев

Вот задание:

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

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