function shootBullet () {

// Проверяем, что с момента

// предыдущего выстрела прошло достаточно времени.

if (getTimerO > nextBulletTimei {

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

attachMoviet"bullet", "bullet'4nextBullet,nextBullet+9999) ;

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

_root ["bullef+nextBullet] ._jc = fox._x+2;

_root [ "bullef+nextBullet] ._y = fo.x._y-55;

/ / Добавляем новую пулю к массиву.

bullets.push(nextBullet) ;

// Изменяем значение переменных, отвечающих

//за появление пуль.

nextBullet++;

nextBulletTime = getTimer()+1000;

}}

Функция moveBullets работает аналогично функции moveBalloons, но перемещает снаряды не вправо и влево, а вверх. Она проверяет одно из следующих условий: снаряд достиг верхнего края экрана либо попал в шар и вызвал функцию checkCollision. В обоих случаях и клип, и элемент массива удаляются.

function moveBullets () {

/7 Проверяем, попали ли пули в шар.

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

// Выбираем элемент.

bullet = _root["bullet"+bullets[i]];

// Передвигаем пулю вверх,

bullet._y -= 10;

// Выясняем, достигла ли она конца экрана,

if (bullet._у < 0) {

bullet.removeMovieClip();

bullets.spliced,1) ;

// Определяем, не попал ли игрок по шару.

} else {

if (checkCollision(bullet)) {

bullet.removeMovieClip();

bullets.splice (i,1);

}}
}}

Функция checkCollision (она будет рассмотрена далее) проверяет все шары и определяет, не находится ли один из них вблизи данного снаряда. При помощи функции distance оценивается расстояние от центра снаряда до центра шара. Если расстояние составляет менее 10 пикселов, что приблизительно равно диаметру шара, выстрел засчитывается как удачный. В клипе шара происходит переход к кадру 2, элемент массива, связанный с шаром, принимает значение true, а функция moveBullet получает команду на удаление снаряда.

Почему для определения попадания используется функция distance, а не hitTest? Причина в том, что функция hitTest выдает значение true в случае, если снаряд попадет в любую часть шара, в том числе и в нитку, которая его держит