91824841

и получаем ссылку на клип,


// Перемещаем все шары,

for(i=balloons.length-1;i>=0;i--) {

// Определяем скорость шара

// и получаем ссылку на клип,

dx = balloons[i].d; balloon = _root[balloons[i].clip];

// Перемещаем шар.

balloon._x += dx;

// При вылете за экран шар удаляется,

if ((dx < 0) and (balloon._x < -20)) {

balloon.removeMovieClip() ;

balloons, splice (i,l);

} else if ((dx > 0) and (balloon._x > 570) balloon.removeMovieClip();
balloons.splice(i,1);

// Если шары закончились, игра завершается.

if ((nextBalloon >= numBalloons) and (balloons.length < 1)){

gotoAndStop("game over");

}}

Функция moveFox определяет, нажаты ли клавиши со стрелками «влево» или "вправо", и перемешает лису на 10 пикселов влево или вправо при нажатии соответствующей клавиши. Как и в предыдущих играх, параметр _xscale клипа, содержащего лису, используется для поворота лисы. Функция также задает переход клипа к анимационной последовательности (изображает идущую лису и начинается в кадре 2), а также к кадр (изображает стоящую лису).

function moveFox () {

// Подвинуть лису влево.



if (Key.isDown (Key.LEFT)) {
dx = -10;

fox._xscale = Math.abs(fox._xscale);

// Подвинуть лису вправо, перевернув ее клип по вертикали.

То есть изменив знак у свойства _scale, мы создаем зеркальное отражение клипа; лиса теперь идет в другую сторону.

}else if (Key.isDown(Key.RIGHT)) { dx = 10;

fox._xscale = -Math.abs(fox._xscale);

// Иначе лиса не двигается.

} else {
dx = 0;

// Перемещаем лису.
fox._x += dx;

if ((dx == 0) and (fox._currentFrame != 1)) {

// Переходим к кадру, в котором лиса стоит,

fox.gotoAndStop(1);

} else if ((dx != 0) and (fox._currentFrame == 1)) {

// Переходим к кадру, где лиса бежит.

fox.gotoAndPlay(2);

}
}

Для того чтобы выстрелить, пользователь должен нажать на клавишу пробела. На нажатие клавиши реагирует скрытая кнопка, которая вызывает функцию shootBullet. Код кнопки будет рассмотрен далее, в разделе "К сведению".
Функция shootBullet проверяет, прошло ли достаточно времени после предыдущего выстрела. Это не дает игроку возможности стрелять залпом по всем мишеням.
Подобно шарам снаряды представлены одновременно клипом и элементом массива, в данном случае массива bullets. Массив используется функцией moveBullets для осуществления выстрелов.
Обратите внимание, что движение клипа, содержащего снаряд, начинается в точке, расположенной в 2 пикселях вправо и 55 пикселях влево от центра клипа лисы. Эта точка соответствует кончику соломинки.



// Проверяем, можно ли выстреливать следующую пулю,

if (getTinerO > nextBulletTime) {

// Создаем пулю.

attachMovie("bullet","bullet"+nextBullet, L.nextBullet+9999);
bullet = _root["bullet"+nextBullet];

// Устанавливаем координаты.

bullet._x = straw._x + Math.cos(strawRadians)*20;

bullet._y = straw._y + Math.cos(strawRadians)*20;

// Добавляем в массив информацию о пуле:

// clip = название клипа,

// angle = начальный угол,

// down = эффект гравитации.

bullets.push({clip:bullet.angle:strawRadians,down:0}

// Увеличиваем счетчик пуль.

nextBullet++;

nextBulletTime = getTimer()+1000;

}}

Функция moveBullets использует параметры angle и down каждого снаряда для перемещения их на определенное расстояние. Кроме этого параметр down увеличивается, чтобы создавался эффект гравитации.
Так как запушенный снаряд должен снова упасть на землю, прежде чем удалить его клип из массива, необходимо проверить, достиг ли он нижнего края экрана.

function moveBullets() {

// Перемещаем все снаряды.

for(i=bullets.length-1;i >=0;i —) {

// Определяем название клипа,

bullet = bullets[i].clip;

// Перемещаем клип.

bullet._x += Math.cos(bullets[i].angle)*10;

bullet._y += Math.sin(bullets[i].angle)*10;

// Добавляем искажение траектории

// из-за воздействия гравитации.

bullet._у += bullets[i].down;

// Увеличиваем значение параметра гравитации,

bullets[i].down += .2;

// Выясняем, достигла ли пуля земли,

if (bullet._у > 400) {

bullet.removeMovieClip();

bullets.splice(i,1);

// Определяем, есть ли попадение.

} else {

if (checkCollision(bullet)) {

bullet.removeMovieClip();

bullets.spliced(i, 1) ;

}}
}}


Содержание раздела