В каждом кадре посредством клипа
hitPoints.push({x:9, y:13});
hitPoints.push({x:0, y:-10});
hitPoints.push({x:-9, y:-7});
hitPoints.push({x:8, y:-7});
// Определяем координаты опор лунохода
footPoints = new Array();
footPoints.push({x:-9, y:13});
footPoints.push({x:9, y:13});
// Создаем массив из клипов "pad" (посадочная площадка)
pads = new Array();
for (i=0; i
pads.push(_root["pad"+i]);
}}
В каждом кадре посредством клипа "actions" вызывается функция moveShip, которая, в свою очередь, вызывает множество небольших функций для управления кораблем. Всегда лучше разбивать большой фрагмент кода на несколько небольших функций.
function moveShip() {
shipThrusters();
shipMovement();
checkForLand();
checkForCrash();}
Функция shipThrusters проверяет, осталось ли еще горючее, если нет, то клип "ship" переходит к кадру "normal". В противном случае, если игрок нажимает на одну из клавиш со стрелками "вверх", "влево" или "вправо", включается соответствующий ускоритель. Клип "ship" переходит к соответствующему кадру, и чтобы отразить эффект действия ускорителя, изменяются значения dx и dy. Также уменьшается количество топлива.
function shipThrusters() {
// Проверяем ускорители и корректируем скорость,
if (fuel < 0) {
ship.gotoAndStop("normal");
} else if (Key.isDown(Key.UP)) {
ship.dy -= .4;
ship.gotoAndStop("up");
fuel -= 2;
showFuel();
} else if (Key.isDownfKey.LEFT)) {
ship.dx -= .2;
ship.gotoAndStop("left");
fuel -= 1;
showFuel();
} else if (Key.isDownfKey.RIGHT)) {
ship.dy += .2;
ship.gotoAndStop("right");
fuel -= 1;
showFuel();
} else {
//He включен ни один из ускорителей,
ship.gotoAndStop("normal");
}}
Функция shipMovement изменяет скорость корабля согласно гравитации и перемешает корабль в зависимости от скорости лунохода.
function shipMovement() {
// Гравитация заставляет корабль двигаться вниз,
ship.dy += gravity;
// Перемещаем корабль.