сделал по этому методу шарики при выстреле не прилипают к курсору но все равно продолжают менять направление в сторону где находился курсор при повторном выстреле

Код AS3:
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.events.MouseEvent;
import flash.ui.Keyboard;
var dist:Number = 0;
var Balls:Array = new Array();
var speed:Number = 10;
var angle:Number;
var dx:Number;
var dy:Number;
var fire:MovieClip;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardF);
//событие клавиатуры;
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouse);
stage.addEventListener(Event.ENTER_FRAME, moveBall);
// событие обновления экрана. Об этом смотри ниже;
fire= new MovieClip();
fire.x = 0;
fire.y = 0;
function mouse(e:MouseEvent):void
{//тип String. Пояснение ниже
var Ball:ball = new ball();
var angle:Number = Math.atan2(mouseY - mc.y,mouseX - mc.x);
this.dx = speed * Math.cos(angle);
this.dy = speed * Math.sin(angle);
addChild(fire);
fire.addChild(Ball);
Ball.x = mc.x;
Ball.y = mc.y;
trace(angle);
trace(dx, dy);
}
function keyboardF(e:KeyboardEvent):void
{//тип String. Пояснение ниже
if (e.keyCode == Keyboard.A)
{
var Ball:ball = new ball();
addChild(fire);
fire.addChild(Ball);
Ball.x = mc.x;
Ball.y = mc.y;
}
if (e.keyCode == Keyboard.DOWN)
{//проверяется, какая клавиша нажата
mc.y += 4;
}
else if (e.keyCode == Keyboard.UP)
{
mc.y -= 4;
}
if (e.keyCode == Keyboard.RIGHT)
{//проверяется, какая клавиша нажата
mc.x += 4;
}
else if (e.keyCode == Keyboard.LEFT)
{
mc.x -= 4;
}
}
function moveBall(e:Event):void
{
for (var i=0; i<fire.numChildren; i++)
{
var Ball:DisplayObject = fire.getChildAt(i);
Ball.x += dx;
Ball.y += dy;
if (Ball.y < dy,Ball.x < dx)
{
fire.removeChildAt(i);
trace("Шарик удален");
}
}
}
помогите разобраться найти ошибку