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


Создание кода - часть 2


function moveCursor() {

// Перемещаем перекрестие в точку,

// где находится курсор мыши.

cursor._x = _xmouse;

cursor._y = _ymouse;

}

Кнопка "button" при нажатии клавиши Пробел вызывает функцию fire, в которой определяется положение курсора и создается пара новых клипов "point" для пуль. Кроме того, в массив bullets добавляются следующие элементы: исходное положение, конечное положение, пройденное расстояние и имя клипа для каждой пули.

function fire() {

// Определяем положение мыши.

х = _xmouse;

y = _ymouse;

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

level++;

attachMovie("point","bullet"+level,level);

bullets.push({startx:50, starty:350, destx:x, desty:y,dist:1.0, clip: "bullet"+level});

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

level++;

attachMovie("point","bullet" + level,level) ;

bullets.push({startx:500, starty:350, destx:x, desty:y, dist:1.0, clip: "bullet"+level});

}

После того как пуля выпушена, ее движением во всех кадрах управляет функция moveBullets, которая использует массив bullets, чтобы отслеживать путь каждой пули. В каждом кадре значение свойства dist уменьшается на 40% от своего предыдущего значения. Пуля отображается между своим исходным и конечным положением в зависимости от значения dist. Если это значение равно 1,0, пуля находится в исходном положении, а при 0,0 - в конечном.
Однако когда значение свойства dist становится равным 0,01, считается, что пуля практически закончила свой путь. В этот момент вызывается функция checkForHit, чтобы определить, попадет ли пуля в астероид или нет. Независимо от результата пуля удаляется из массива и ролика.
Эта игра не претендует на трехмерную модель реального пространства. Она, скорее, воссоздает типичную аркадную игру.

function moveBullets() {

// Перемещаем все пули.

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

// Увеличиваем пройденное расстояние на 40%.

bullets[i].dist *= .4;

// Если пуля оказалась слишком далеко от астероида,

// удаляем ее.




Начало  Назад  Вперед