Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KA-16-Lek-P.doc
Скачиваний:
6
Добавлен:
14.09.2019
Размер:
407.04 Кб
Скачать
  1. После предыдущего скрипта добавляется следующий:

onClipEvent (keyUp) {

if (!key.isDown(key.SPACE)) {

speed = noThrust;

_root.thrustBoost.gotoAndStop ("off");

}

}

Скрипт по своему синтаксису похож на предыдущий, только работает наоборот. Прежде всего, он выполняется в том случае, если клавиша, нажатая на клавиатуре, отпущена. Условный оператор проверяет, чтобы клавиша "пробел" была не нажата. Если это так, выполняются два действия. Первое вновь присваивает переменной speed значение noThrust (начальное значение). Второе действие приказывает экземпляру фильма-символа thrustBoost перейти к кадру с меткой off, где надпись "Thrusters" изображена так, как было до включения ускорителей.

Выявление столкновений объектов

Часто во Flash-приложениях, особенно в играх, требуется выявлять ситуации, когда два объекта "встречаются" между собой на сцене. Здесь тоже находит применение условная логика.

Для обнаружения столкновения двух объектов (экземпляров фильмов-символов) в ActionScript имеется метод hitTest() объекта MovieClip. Используя этот метод в соединении с условной логикой, вы сможете запрограммировать действия, которые должны быть выполнены в случае встречи одного фильма-символа с другим. Взгляните на следующий скрипт:

onClipEvent (enterFrame) {

if (hitTest ("wallOfCotton")) {

pain = 0;

} else if (hitTest ("wallOfCardboard")) {

pain = 5;

} else if (hitTest ("wallOfBricks")) {

pain = 10;

}

Если экземпляр фильма-символа, к которому присоединен этот скрипт, встретится на сцене с экземпляром под названием wallOfCotton, переменная pain получает значение 0. Если встретится с wallOfCardboard, pain получит значение 5. Наконец, если столкновение будет с экземпляром wallOfBricks, pain получит значение 10. Как видите, в применении метода hitTest() нет ничего сложного.

Далее мы воспользуемся методом hitTest() совместно с условной логикой для выполнения определенных действий, если экземпляр rocket при движении натолкнется на одну из красных полос, ограничивающих наше "окно запуска» – запуск будет считаться неудавшимся, если пройдет между ними – запуск успешный.

  1. Скрипт для одной из красных полос:

onClipEvent (enterFrame) {

if (hitTest("_root.rocket")) {

_root.rocket._x = 98;

_root.rocket._y = 352;

_root.rocket.launch = false;

_root.rocket.gotoAndStop ("off");

_root.status.gotoAndStop ("Abort");

_root.sounds.gotoAndPlay ("abort");

}

}

Этот скрипт помещен в обработчик события enterFrame, а значит, оператор if будет проверять условие 24 раза в секунду. Условие состоит в том, чтобы данный экземпляр столкнулся с экземпляром фильма-символа rocket (_root.rocket). Если это произошло, выполняются действия в теле оператора. Первые два возвращают ракету на ее начальную позицию. Следующее действие присваивает переменной launch (на монтажном столе экземпляра rocket) значение false, что приводит к прекращению движения ракеты. Следующее действие перемещает экземпляр rocket к кадру с меткой off (в этом кадре ракета изображена без огненного хвоста). Затем экземпляр клипа status перемещается к кадру с меткой abort – на экране отображается сообщение о том, что миссия закончилась неудачей. И, наконец, экземпляр клипа sounds отсылается к кадру с меткой abort, в результате воспроизводится звукозапись, и ллюстрирующая неудачный исход запуска.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]