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

Код
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
{

        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("Шарик удален");
                }
        }

}


Код
var dist:Number = 0;
var mc_speedXFROM: Array=new Array();
var mc_speedYFROM: Array=new Array();
var mc_angle;

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardF);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouse);
stage.addEventListener(Event.ENTER_FRAME, moveBall);



function mouse(e:MouseEvent):void
{


    for (var i=0; i<fire.numChildren; i++)
    {


        mc_angle = Math.atan2(mouseY - mc.y,mouseX - mc.x);
        mc_speedXFROM[i] = Math.cos(mc_angle);
        mc_speedYFROM[i] = Math.sin(mc_angle);
        trace(i);
    }
    var Ball:ball = new ball();
    Ball.x = mc.x;
    Ball.y = mc.y;
    fire.addChildAt(Ball,0);
}


function keyboardF(e:KeyboardEvent):void
{

    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 s=0; s<fire.numChildren; s++)
    {
        var Ball:DisplayObject = fire.getChildAt(s);
        Ball.x +=  mc_speedXFROM[s] * 5;
        Ball.y +=  mc_speedYFROM[s] * 5;

        if (Ball.y < 0)
        {
            fire.removeChildAt(s);
            trace("Шарик удален");
        }
    }
}


но проблема остается... помогите решить