Примечание
Функция getTimer – это своеобразные часы. Функция возвращает количество миллисекунд, прошедших после начала ролика. Значение этих часов постоянно увеличивается, поэтому данную функцию удобно использовать для управления временными интервалами в вашей игре.
Функция onClipEvent(enterFrame) определяет, наступило ли время для появления следующей лисы. Затем она выбирает такое новое отверстие, которое не используется в данный момент. Интервал времени между появлениями лис сокращается на 10 миллисекунд, в результате чего игра с каждым разом все больше ускоряется. Если значение интервала составляет менее 1000 миллисекунд, игра завершается. За 150 секунд пользователь получает 100 возможностей поразить лису.
onClipEvent (enterFrame) {
// Определяем, не пора ли показывать следующую лису.
if (getTimer >= nextFox) {
// Сокращаем время между показами.
timeBetweenFoxes -= 10;
// Выясняем, не пора ли заканчивать игру.
if (timeBetweenFoxes < 1000) {
_root.gotoAndPlay("End") ;
// Если нет, показываем следующую лису.
} else {
// Увеличиваем счетчик показанных лис.
numFoxes++;
_root.showScore = score + "/" + numFoxes;
// Определяем, какая лиса покажется. while (true) {
while (true) {
fox = Int(Math.Random*18);
if (_root["fox"+fox]._currentFrame == 1) break;
}
// Выбранная лиса появляется из отверстия.
_root ["fox"+fox].gotoAndPlay ("popup") ;
// Устанавливаем время появления следующей лисы.
nextFox = getTimer + timeBetweenFoxes;
}
}
}Следующая функция обрабатывает нажатия кнопки мыши пользователя. Здесь используется тот же самый прием, что и в игре «Найди лису»: программа проверяет клипы на попадание по ним при помощи функции hitTest. Также программа проверяет, воспроизводится ли анимационная последовательность, в которой лиса выглядывает из отверстия. Кадр 1 клипа является статическим и представляет собой простое отверстие. Кадры 2-24 – это анимация лисы, которую поразил пользователь. Пользователь может щелкнуть по лисе только во время анимации, в которой лиса выглядывает из отверстия (эта анимация начинается с кадра 25). Таким образом, если номер кадра больше, чем 24, щелчок разрешается. В противном случае он игнорируется.
onClipEvent (mouseDown) {
// Определяем, по какому месту щелкнул пользователь.
x = _root._xmouse;
o = _root._ymouse;
// Проверяем на попадание всех лис.
for (i=0;i<18;i++) {
// Проверяем только выглядывающих лис.
if (_root["fox"+i]._currentFrame > 24) {
// Выясняем, попал ли пользователь по лисе.
if (_root["fox"+i].hitTest(x,y,false)) {
// Воспроизводим анимацию, соответствующую попаданию.
_root["fox"+i].gotoAndPlay("whack");
// Увеличиваем количество очков.
score++;
_root.showScore = score + "/" + numFoxes;
}
}
}
}К сведению
Как обычно, в некоторые места сценария необходимо добавить дополнительный код. В основной кадр, а также в кадры начала и завершения игры необходимо поместить команду stop. В нашем примере эти кадры являются отдельными сценами.
Другие возможности
Имейте в виду, что клипы, изображающие лис, не обязательно должны быть одинаковыми. Сценарий реагирует только на метки «whack» (удар) и «popup» (выглядывающая лиса), а после 24 кадра еще и на начало анимации выглядывающей лисы. Вы можете использовать несколько клипов, изображающих разных лис. Необходимо лишь убедиться, что они достаточно похожи для того, чтобы код мог их обрабатывать, а также присвоить им соответствующие имена при размещении экземпляров клипов на рабочем поле. Использование различных лис сделает игру интереснее.