В каждом кадре корабль перемешается
function shipFire() {
// Выясняем, достаточно ли времени прошло
//с момента последнего выстрела.
if (timeOfLastFire+200 < getTimer()) {
// Запоминаем, когда производится этот выстрел.
timeOflastFire = getTimer();
// Создаем пулю.
level++;
attachMovie("bullet", "bullet"+level, level);
// Определяем положение и направление движения пули,
clip = _root["bullet"+level];
clip._x = ship._x;
clip._y = ship._y;
clip.dx = 10.0*Math.cos(2.0*Math.PI*-(ship._rotation-90)/360.0);
clip.dy = 10.0*Math.sin(2.0*Math.PI*(ship._rotation-90)/360.0) ;
// Добавляем элемент массива
bullets, bullets.push(clip);
}}
В каждом кадре корабль перемешается на один шаг: для этого увеличиваются значения свойств _х и _у на величины dx и dy соответственно. Если корабль слишком далеко подвинулся вправо, то есть за пределы рабочего поля, то из значений этих свойств вычитается 550 пикселов, чтобы корабль появился с противоположной стороны экрана. Аналогичные действия производятся для левой, нижней и верхней границ рабочего поля.
function shipMove() {
// Перемещаем корабль по горизонтали или, если нужно,
//на противоположную сторону экрана.
ship._x += ship.dx;
if (ship._x > 550) ship._x -= 550;
if (ship._x < 0) ship._x += 550;
// Перемещаем корабль по вертикали или, если нужно,
//на противоположную сторону экрана.
ship._y += ship.dy;
if (ship._y > 400) ship._y -= 400;
if (ship._y < 0) ship._y += 400;
}
Пули двигаются так же, как и корабль. Однако необходимо просматривать весь массив bullets, чтобы перемешать все пули. Если пуля вылетает за границу экрана, она удаляется, а не появляется с противоположной стороны.
function bulletsMove() {
// Передвигаем все пули.
for(i=bullets.length-1; i>=0; i--) {
// Перемещаем пулю по вертикали и горизонтали,
bulletsti]._х += bullets[i].dx;
bullets [ij ._y += bullets [i] .dy;
// Выясняем, вылетела ли пуля за границу экрана,
if ((bullets[i]._x > 550) or (bullets[i]._x < 0) or (bullets[i]._y > 400) or (bullets[i]._y < 0)) {