Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
материал. часть2 / Розенцвейг_Adobe_Flash_Создание аркад, головоломок и других игр с помощью ActionScript.rtf
Скачиваний:
52
Добавлен:
11.02.2016
Размер:
9.87 Mб
Скачать

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

В библиотеке ролика на Web‑сайте вы увидите два клипа яблока. Первый, «bad apple», содержит 20 кадров. Каждый кадр включает изображение яблока и согласной. Другой клип, «good apple», содержит 5 кадров для 5 гласных. На рис. 9.5 изображено основное окно Flash, открытое на клипе «bad apple».

Рисунок 9.5. Клип «bad apple» состоит из 20 кадров. Каждый кадр содержит изображение яблока и одного из согласных звуков

В диалоговом окне Symbol Linkage Properties обоим клипам будет назначено свойство Export for ActionScript и присвоен идентификатор «good apple» или «bad apple».

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

Код клипа «actions» аналогичен тому, что использовался в игре «Поймай яблоко». Изменятся только функции.

В функцию initGame было внесено лишь одно изменение: число падающих яблок было увеличено до 50.

function initGame() {

// Инициализация переменных, хранящих

// номера первого и последнего яблока.

firstApple = 1;

lastApple = 0;

// Инициализация переменной, хранящей число пойманных яблок.

score = 0;

// Задаем общее количество яблок.

totalApples = 50;

// Скорость падения и счетчик времени между появлениями яблок.

timeSinceLastApple = 0;

appleSpeed = 5;

// Создаем экземпляр клипа, содержащий лису.

attachMovie("running fox","fox",999999);

fox._x = 275;

fox._y = 300;

}

Функция moveFox полностью совпадает с аналогичной функцией игры «Поймай яблоко», поэтому нет смысла повторять ее здесь. Функция dropNewApple будет отличаться, так как она должна выбирать, какое яблоко бросать, а затем отображать произвольный кадр выбранного клипа.

function dropNewApple() {

// Проверяем, прошел ли заданный промежуток времени.

if (timeSinceLastApple > 20) {

// Бросаем яблоко, если не превышено

// их предельно допустимое количество.

if (lastApple < totalApples) {

// Устанавливаем вероятность сброса яблока в 10 %.

if (Math.random() < .1) {

// Создаем объект‑яблоко.

lastApple++;

if (Math.random() < .5) {

// В 50 % случаев яблоко плохое.

attachMovie( "bad apple", "apple"+lastApple, lastApple);

_root["apple"+lastApple].type = "bad";

} else {

// В 50 % случаев яблоко хорошее.

attachMovie( "good apple", "apple"+lastApple, lastApple);

_root["apple"+lastApple].type = "good";

}

f=int(Math.Random()*_root["apple"+

lastApple]._totalFrames) + 1;

trace(f);

_root["apple"+lastApple].gotoAndStop(f);

_root["apple"+lastApple]._x = Math.random()*490+30;

_root["apple"+lastApple]._y = 0;

// Сбрасываем счетчик времени ожидания.

timeSinceLastApple = 0;

// Увеличиваем скорость падения яблока.

if (appleSpeed < 10) appleSpeed += .5;

}

}

}

// Если не бросили яблоко, приближаем это событие.

timeSinceLastApple++;

}

Функция dropNewApple создает переменную type для каждого клипа. Хотя данные клипы не имеют внутри себя сценария, для них можно определять переменные. Поэтому переменная type для гласных звуков будет иметь значение «good», для согласных – bad". Данная переменная проверяется в функции moveApples, когда игрок ловит яблоко. Таким образом, можно определить, поймал ли игрок хорошее яблоко или плохое.

function moveApples() {

// Проверяем все летящие яблоки.

for (i=firstApple;i<=lastApple;i++) {

// Определяем местоположение яблока.

x = _root["apple"+i]._x;

o = _root["apple"+i]._y + appleSpeed;

// Выясняем, достигло ли яблоко земли.

if (y > 400) {

removeApple(i);

// Попало ли в яблоко корзину?

} else if ((Math.abs(y‑fox._y) < 10) and (Math.abs(x‑fox._x) < 25)) {

if (_root["apple"+i].type == "good") {

// Если яблоко хорошее, увеличиваем очки.

score += 1;

} else {

// Если плохое – уменьшаем.

score ‑= 1;

// Проверяем, чтобы количество очков

// не было отрицательным числом.

if (score < 0) score = 0;

}

removeApple(i);

// Продолжаем перемещать яблоко.

} else {

_root["apple"+i]._y = y;

}

}

}

Функция removeApple аналогична соответствующей функции в игре «Поймай яблоко».

Соседние файлы в папке материал. часть2