Опубликован: 04.11.2006 | Доступ: свободный | Студентов: 4461 / 498 | Оценка: 4.46 / 3.96 | Длительность: 39:17:00
Урок 9:

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

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

Программирование реакции на несколько условий

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

  1. Откройте файл 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. В кадры каждой из этих меток помещен соответствующий звуковой клип, иллюстрирующий вступление, запуск, неудачу и успех. Скрипты, отсылающие этот фильм-символ к той или иной метке, обеспечат звуковое сопровождение нашего проекта.

Приступим к написанию скриптов для проекта.

  1. Откройте панель Действия, выделите экземпляр фильма-символа weather и присоедините к нему следующий скрипт:
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 ) в зависимости от погоды.

  1. Добавьте в обработчик события load, сразу после последней секции оператора if, следующие строки:
gotoAndStop(conditions);
_root.weatherText.text = "Weather: " + conditions;

Эти два действия будут выполнены сразу после завершения работы условного оператора if; оба они используют значение переменной conditions. Первое действие перемещает данный экземпляр фильма-символа к кадру с меткой, название которой содержится в переменной conditions. Если, например, conditions имеет значение "Rainy", экземпляр клипа перемещается к метке Rainy – кадру, который содержит изображение дождливой погоды. Второе действие создает надпись, отображаемую в текстовом поле weatherText, что в правом нижнем углу сцены. Пусть опять conditions имеет значение "Rainy", тогда в этом текстовом поле отобразится надпись "Weather: Rainy".

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

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

Примечание Если закрыть тестовый фильм, а затем вновь выполнить команду Управление > Проверить фильм, то погода на экране может оказаться уже иной – в результате генерации другого случайного числа.

  1. По-прежнему находясь в среде тестирования, выполните команду Отладка > Список переменных (Debug > List Variables).

Откроется окно Выход (Output), в котором будут перечислены все переменные, находящиеся на разных монтажных столах. Отметьте про себя значения переменных thrust и noThrust на монтажном столе rocket. Вскоре мы ими воспользуемся.


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

Мы продолжим работать с этим файлом в следующем упражнении.

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

Вот задание:

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

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

Добрый день.

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

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