Иллюстрированный самоучитель по созданию Flash-игр

Стрельба по воздушным шарам

Подготовка ролика

В ролике Balloonshoot.fla клип лисы содержит кадр с меткой "stand" и анимационную последовательность, помеченную "walk". Анимация изображает лису, перемещающуюся влево (рис. 10.2), однако при помощи Action-Script вы можете повернуть лису в другую сторону, не создавая отдельной анимации. Главное условие: соломинка должна занимать во всех кадрах одно и то же положение относительно центральной точки клипа.

Иллюстрированный самоучитель по созданию Flash-игр › Игры типа "Прицелься и выстрели" › Стрельба по воздушным шарам
Рис. 10.2. Лиса идет влево и всегда готова выстрелить из соломинки

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

Иллюстрированный самоучитель по созданию Flash-игр › Игры типа "Прицелься и выстрели" › Стрельба по воздушным шарам
Рис. 10.3. При попадании в шар запускается воспроизведение анимации взрыва

Для окраски шара используются оттенки серого цвета. Цвет задается одновременно с созданием нового клипа шара. В результате один клип шара каждый раз принимает новый оттенок.

Клип снаряда содержит короткую линию. Хотя в качестве снаряда используется горошина, вертикальная линия создает видимость движения вверх.

Создание кода

Небольшой клип "actions" помешается за пределами рабочего поля и контролирует процесс игры путем обращения к функциям главной временной шкалы. Она запускает игру при загрузке и вызывает ряд функций в каждом кадре.

onClipEvent(load) {
    _root.initGame();
    onClipEvent(enterFrame) {
        _root.newBalloon();
        _root.moveBalloons();
        _root.moveFox();
        _root.moveBullets();
    }
}

Функция initGame задает все основные переменные, используемые в игре.

function initGame() {
    // Инициализируем переменные, связанные с объектами-шарами.
    nextBalloonTime = 0;
    nextBalloon = 0;
    balloons = [];
    numBalloons = 10;
    // Инициализируем переменные,
    nextBulletTime = 0;
    nextBullet = 0;
    bullets = [];
    // Количество очков равно 0.
    score = 0;
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.