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

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

< Урок 8 || Урок 9: 1234567 || Урок 10 >
Аннотация: В жизни мы все постоянно сталкиваемся с ситуациями, где от нас требуется предпринять те или иные действия в зависимости от обстоятельств. Сами того не осознавая, мы постоянно говорим себе: "если обстоятельства таковы, я должен поступить так-то". Если на улице жара – надеть шорты, если дождь – надеть брюки; и тому подобное. Этот процесс принятия решений в зависимости от обстоятельств, или условий, называется условной логикой.

Условная логика – важнейший компонент интерактивных приложений. Именно на этом основано "разумное" поведение программ – та или иная реакция в зависимости от перемещения или положения указателя мыши, текущего дня недели, многих других динамических условий, возникающих в процессе воспроизведения фильма. С помощью условной логики вы сможете перейти от простого линейного воспроизведения презентаций и анимаций к динамическим проектам, поведение которых будет зависеть и от пользователя, и от разных внешних обстоятельств.

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

Внимание! Для работы с этим уроком необходимы учебные файлы, которые Вы можете загрузить здесь.

Что будет изучаться

В этом уроке:

  • Управление последовательностью выполнения скриптов при помощи операторов if, if/else, if/else if
  • Операторы, применяемые в условной логике, их назначение и возможности
  • Какие условия могут возникать в фильме
  • Программирование реакции проекта на те или иные обстоятельства
  • Программирование ограничений перемещения объекта
  • Разрешение и запрет выполнения блока программы с помощью условной логики
  • Программирование взаимодействия проекта с пользователем
  • Выявление столкновений объектов

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

Время выполнения

На выполнение этого урока требуется примерно один час.

Файлы урока

Файлы-носители:

Нет

Стартовые файлы:

Lesson09/Assets/rocketLaunch1.fla

Законченные проекты:

rocketLaunch6.fla

Управление последовательностью выполнения скриптов

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

Оператор if.

Ядром всей условной логики в ActionScript является конструкция "если – то", реализуемая (в различных вариациях) оператором if. Давайте рассмотрим такой пример:

if (moneySaved > 500) {
  buyStuff();
}
// дальнейшие действия…

В этом скрипте функция buyStuff() вызывается, только если переменная moneySaved имеет значение, большее 500. Если значение moneySaved меньше или равно 500, вызов функции buyStuff() игнорируется и выполнение скрипта продолжается действиями, следующими за оператором if.


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

if (это – истина) {
  Делать это;
}

Как и в реальной жизни, порой оператор if, прежде чем предпринять действие или набор действий, должен проверять сразу несколько условий. Вот пример.

if (moneySaved > 500 && billsPaid == true) {
  buyStuff();
}

Здесь в выражении условия появился еще оператор И ( && ), так что функция buyStuff() будет вызвана только в том случае, если переменная moneySaved имеет значение, большее 500 и billsPaid равно true. Если хотя бы одно из этих утверждений ложно, вызов buyStuff() игнорируется. Другой вариант конструкции из двух условий связан с применением оператора ИЛИ ( || ). Вот пример:

if (moneySaved > 500 || wonLottery == true) {
  buyStuff();
}

Здесь функция buyStuff() будет вызвана в том случае, если переменная moneySaved больше 500 или wonLottery имеет значение true, то есть требуется выполнение хотя бы одного из двух утверждений.

Эти операторы можно применять вместе, создавая изощренные условные выражения вроде этого:

if (moneySaved > 500 && billsPaid == true || wonLottery == true) {
  buyStuff();
}

В этом скрипте функция buyStuff() будет вызвана в том случае, если переменная moneySaved больше 500 и billsPaid равно true, или если wonLottery имеет значение true.

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

Оператор Описание Пример
== Проверка на равенство if (name == "Derek") означает: "Если значение name точно равно Derek, выполнить…
!= Проверка на неравенство if (name != "Derek") означает: "Если значение name иное, чем Derek, выполнить…
< Меньше, чем… if (age < 30) означает: "Если значение age меньше 30, выполнить…
> Больше, чем… if (age > 30) означает: "Если значение age больше 30, выполнить…
<= Меньше или равно if (age <= 30) означает: "Если значение age меньше или равно 30, выполнить…
>= Больше или равно if (age >= 30) означает: "Если значение age больше или равно 30, выполнить…
&& Логическое И if (day == "Friday" && pmTime > 5) означает: "Если day имеет значение Friday, а значение pmTime больше 5, выполнить…
|| Логическое ИЛИ if (day == "Saturday" || day == "Sunday") означает: "Если day имеет значение Saturday или Sunday, выполнить…

Совет Распространенная ошибка – при проверке на равенство ставить одиночный знак ( = ) вместо сдвоенного ( == ). Помните, что одиночный знак равенства обозначает оператор присвоения (например, money = 300 – "присвоить переменной money значение 300"). Сдвоенный знак равенства ( money == 300 ) обозначает оператор сравнения, он ничего не присваивает, а лишь проверяет, равны ли значения слева и справа от него.

Совет Со сравнением чисел все просто – в конце концов, каждый понимает, что 50 меньше 100, другое дело – сравнение текстовых значений. Строка "Derek" отнюдь не равна строке "derek", хотя, казалось бы, слово одно и то же. В текстовых значениях буква A, например, "меньше", чем буква Z, и все заглавные буквы "меньше", чем строчные. Латинская буква A имеет внутреннее представление (числовой код) 1, а буква z – 52 (ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz).

< Урок 8 || Урок 9: 1234567 || Урок 10 >
Салтанат Бектегенова
Салтанат Бектегенова

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

 

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

Вот задание:

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

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