//Эти переменные скажут вам, какая клавиша нажата
var leftArrow:Boolean = false;
var rightArrow:Boolean = false;
var upArrow:Boolean = false;
//Угловая скорость rotationSpeed определяет скорость, с какой поворачивается ракета
var rotationSpeed:Number = 10;
//accelaration определяет скорость, с которой движется ракета
var acceleration:Number = 0.5;
//Ship x and y speed
var xSpeed:Number = 0;
var ySpeed:Number = 0;
//Добавим ENTER_FRAME который двигает the ship
addEventListener (Event.ENTER_FRAME,moveRocket);
//Слушаем нажатия клавиши
stage.addEventListener (KeyboardEvent.KEY_DOWN,keyDownHandler);
stage.addEventListener (KeyboardEvent.KEY_UP,keyUpHandler);
function moveRocket (e:Event):void {
//Вначале мы повернем ракету
if(rightArrow) {
rocket.rotation += rotationSpeed;
}
if(leftArrow) {
rocket.rotation -= rotationSpeed;
}
//Если пользователь нажимает клавишу со стрелкой вверх, выполняется следующее
if(upArrow) {
//Увеличиваем скорость по x и y
xSpeed += Math.cos(Math.PI*rocket.rotation/180)*acceleration;
ySpeed += Math.sin(Math.PI*rocket.rotation/180)*acceleration;
//Созлаем огонь
var fire:MovieClip = new MovieClip();
//Рисуем огонь
drawFire(fire);
//Создаем новый огонь в конце ракеты
fire.x = rocket.x - Math.cos(Math.PI*rocket.rotation/180)
* (rocket.width / 2);
fire.y = rocket.y - Math.sin(Math.PI*rocket.rotation/180)
* (rocket.height / 2);
//Добавляем огонь на сцену
addChildAt(fire,0);
fire.addEventListener(Event.ENTER_FRAME, animateFire);
}
//Присвоим новые координаты по x и y для ракеты
rocket.x += xSpeed;
rocket.y += ySpeed;
//Заставим ракету появляться на другой стороне, есди она выходит за границы
if (rocket.x > stage.stageWidth) {
rocket.x = 0;
}
else if (rocket.x < 0) {
rocket.x = stage.stageWidth;
}
if (rocket.y > stage.stageHeight) {
rocket.y = 0;
}
if (rocket.y < 0) {
rocket.y = stage.stageHeight;
}
}
//Это вызывается, когда пользователь нажимает клавишу
function keyDownHandler (e:KeyboardEvent):void {
//Кликнули клавишу с левой стрелкой
if (e.keyCode == 37) {
leftArrow = true;
}
//Кликнули клавишу с правой стрелкой
else if (e.keyCode == 39) {
rightArrow = true;
}
//Кликнули клавишу со стрелкой вверх
else if (e.keyCode == 38) {
upArrow = true;
}
}
//Это вызывается, когда пользователь нажимает клавишу
function keyUpHandler (e:KeyboardEvent):void {
//Левая стрелка вверх
if (e.keyCode == 37) {
leftArrow = false;
}
//Правая стрелка вверх
else if (e.keyCode == 39) {
rightArrow = false;
}
//Верхняя стрелка вверх
else if (e.keyCode == 38) {
upArrow = false;
}
}
//Эта функция рисует красный шар
function drawFire (mc:MovieClip):void {
//Даем красный цвет для круга
mc.graphics.beginFill (0xff0000);
//Рисуем круг
mc.graphics.drawCircle (0, 0, 10);
//Конец заливки
mc.graphics.endFill ();
}
//Эта функция делает огонь затухающим в каждом кадре
function animateFire(e:Event):void {
//В каждом кадре уменьшаем альфа и масштаб следа шара.
e.target.alpha -= 0.04;
e.target.scaleY -= 0.04;
e.target.scaleX -= 0.04;
//Удаляем огонь, если альфа меньше чем 0
if(e.target.alpha<0) {
e.target.removeEventListener(Event.ENTER_FRAME, animateFire);
removeChild((MovieClip)(e.target));
}
}