Космический бой
В ролике на главной временной шкале расположены три кадра: "start", "play" и "game over". Все действие происходит в кадре "play".
Рис. 16.2. Взрыв астероида (клип "rock")
Создание кода
Код инициализируется действием, помешенным в небольшой клип "actions", который расположен за пределами рабочего поля, и кнопкой "button", которая находится точно под клипом. Клип "actions" вызывает одну функцию в начале игры и четыре других при каждом обращении к кадру.
onClipEvent(load) {
// Загружаем игру.
_root.initGame();
}
onClipEvent(enterFrame) {
// Перемещаем перекрестие.
_root.moveCursor();
// Перемещаем все пули.
_root.moveBullets();
//С вероятностью 10% создаем новый астероид,
if
(Math.random()
<
0.1
)
_root.createRock();
// Перемещаем все астероиды.
_root.moveRocks();
}
Кнопка "button" реагирует на нажатие клавиши Пробел и вызывает функцию основной временной шкалы.
on
(keypress
"space"
) {
// Нажатие клавиши Пробел означает выстрел,
fire();
}
Вы обнаружите все функции в основной временной шкале. Функция initGame создает массивы, в которых будет храниться информация об астероидах и пулях. Она помешает клипы "foreground" и "cursor" поверх остальных, таким образом оказывается, что астероиды и пули располагаются под ними. Будет казаться, что они находятся вне космического корабля.
Восстанавливаются значения переменных damage и hits. Переменная level не имеет отношения к уровню игры, а используется для определения вновь создаваемого клипа. Каждый новый клип – пуля или астероид – помешается на новый уровень.