- •Время выполнения
- •Управление последовательностью выполнения скриптов
- •Оператор if.
- •Оператор if/else if
- •Оператор if/else
- •Другие условные операторы
- •Выбор условий
- •Рограммирование реакции на несколько условий
- •Файл-пример rocketLaunch1.Fla из папки Lesson09/Assets.
- •Установление граничных условий
- •Код для одной из двух красных полос в верхней части сцены:
- •Включение/Выключение
- •После предыдущего скрипта поместите следующий:
- •Скрипт кнопки Launch:
- •После предыдущего скрипта добавьте следующий:
- •Реакция на действия пользователя
- •Скрипт для-символа rocket:
- •После предыдущего скрипта добавляется следующий:
- •Выявление столкновений объектов
- •Скрипт для одной из красных полос:
- •Для второй красной полосы добавляется такой же скрипт, как и к первой.
Выбор условий
В проекте может быть использовано много различных условий, управляющих работой приложения и взаимодействием с пользователем. Условия могут выглядеть поразному, но в основе всегда лежит одно правило: результатом условия может быть true либо false. Вот несколько примеров ситуаций, в которых обычно применяются условные операторы:
Один объект входит в контакт с другим объектом
Что-либо включается или выключается
Положение, размер или другое свойство фильма-символа достигает определенного значения (или становится больше этого значения, или меньше)
Пользователь выполнил определенные действия с мышью или клавиатурой
Сравнение двух числовых или текстовых значений
Различные комбинации перечисленных ситуаций
Рограммирование реакции на несколько условий
Далее мы разберемся с созданием анимации запуска ракеты. Для успешного запуска требуются определенные условия. Одним из важнейших факторов является погода, которая влияет на ускорение ракеты, а также на ее управляемость. В этом упражнении мы запрограммируем генерацию случайно выбранных погодных условий, на которые наша ракета будет так или иначе реагировать.
Файл-пример rocketLaunch1.Fla из папки Lesson09/Assets.
Этот файл содержит единственную сцену из семи слоев, названных в соответствии с их содержанием. Давайте рассмотрим элементы сцены.
Слой Weather содержит экземпляр фильма-символа, размер которого такой же, как у всего фильма. Этот фильм-символ представляет в нашей сцене изображение неба. На его монтажном столе имеется три метки: Sunny, Rainy и Night/. На каждой из этих меток кадры содержат соответствующую фоновую картинку: на метке Sunny – ясная погода, на Rainy небо затянуто тучами, на Night небо темное, ночное.
Слой Ground/Central Graphics содержит изображение стартового поля и гор на заднем плане. Кроме того, в этом слое находится экземпляр фильма-символа в виде маленькой красной мигающей точки, отмечающей место запуска на глобусе.
Слой Rocket содержит, само собой, нашу ракету – экземпляр фильма-символа под именем rocket. На монтажном столе этого клипа две метки: off и on. На метке on ракета изображена с хвостом пламени, на метке off – без.
Слой Control Panel содержит несколько элементов, из которых прежде всего бросается в глаза красная кнопка запуска – Launch. Она, между прочим, будет не только запускать ракету, но и возвращать сцену в исходное состояние после каждой попытки запуска. Ниже этой кнопки расположен экземпляр фильма-символа под названием thrustBoost – он представляет собой надпись "Thrusters". У этого клипа тоже имеется две метки, on и off. На метке on надпись отображается буквами большими и красными – стало быть, ускорители ракеты включены. Последний элемент этого слоя – текстовое поле, расположенное в правом нижнем углу сцены, имя экземпляра – weatherText. Здесь будет отображаться текстовая информация о текущем состоянии погоды.
Слой Status содержит экземпляр фильма-символа по имени status; на сцене вы видите его, как маленький кружок посреди "неба". Он так выглядит потому, что в его первом кадре отсутствует какая-либо графика. На монтажном столе этого фильма-символа три метки: off, abort и success. На метке off клип выглядит так, как сейчас – то есть никак. На метке abort появляется надпись "Launch Aborted" (запуск не удался); на метке success – надпись "Launch Successful" (успешный запуск). Таким образом, этот клип отображает сообщение об успехе или неудаче попытки запуска.
В слое Guides находятся две красные полоски – ракета должна пройти через пространство между ними, чтобы запуск считался успешным.
Слой Sound Clips содержит экземпляр фильма-символа под названием sounds; в проекте он тоже показан в виде маленького кружка, в районе левого верхнего угла сцены. На его монтажном столе имеются метки intro, launch, abort и success. В кадры каждой из этих меток помещен соответствующий звуковой клип, иллюстрирующий вступление, запуск, неудачу и успех. Скрипты, отсылающие этот фильм-символ к той или иной метке, обеспечат звуковое сопровождение нашего проекта.
Приступим к написанию скриптов для проекта.
onClipEvent (load) {
randomWeather = random (3);
if (randomWeather == 0) {
conditions = "Sunny";
_root.rocket.noThrust = 3;
_root.rocket.thrust = 6;
} else if (randomWeather == 1) {
conditions = "Rainy";
_root.rocket.noThrust = 2;
_root.rocket.thrust = 4;
} else {
conditions = "Night";
_root.rocket.noThrust = 1;
_root.rocket.thrust = 2;
}
}
Этот скрипт будет выполняться при загрузке данного экземпляра фильма-символа. Первым действием присваивается значение переменной randomWeather – случайно выбранное число (из трех возможных: 0, 1 или 2). После этого оператор if начинает анализировать значение randomWeather, чтобы присвоить нужные значения трем другим переменным. Если randomWeather имеет значение 0, то на текущем монтажном столе (этого фильма-символа) создается переменная conditions, и ей присваивается строковое значение "Sunny". Кроме того, создаются две переменные на монтажном столе фильма-символа rocket: одна называется noThrust, другая – thrust; эти переменные получают значения 3 и 6 соответственно. Если же значение randomWeather не равно 0, то эта секция условного оператора игнорируется, и управление передается секции else if, которая проверяет значение randomWeather на равенство единице. Если условие выполняется, то создаются те же три переменные, но на этот раз они получают значения "Rainy", 2 и 4, соответственно. Если значение randomWeather не равно 1, то эта секция тоже игнорируется, и выполняются действия из секции else. Как вы помните, в секции else условного оператора помещаются действия, которые должны быть выполнены в том случае, если ни одно из условий предыдущих секций оператора не выполнено. У нас в секции else создаются все те же три переменные, только в этом случае они получают значения "Night", 1 и 2.
Переменной conditions мы вскоре воспользуемся для графического отображения на сцене различных погодных условий. Две другие переменные послужат для задания скорости движения ракеты (экземпляра rocket) в зависимости от погоды.