SWF becomes choppy and slow when loaded into another SWF

Hi am making a game involving a number of balls that move across the screen. Everything works fine and dandy when I play the SWF on its own, but when I load it into another SWF, animation & performance become increasingly choppy with time. Everything starts out OK, but then it gets slower and slower as if the system memory is overwhelmed (is this some sort of garbage collection problem?). If this also happened with the original SWF, I would assume I was over-taxing the flash player, but it runs perfectly fine on its own, so it seems to be an issue with playing the SWF in a Loader object. Both SWFs play at the same frame rate.

In the code, I have 100 balls that are made on one side of the screen, move across, and then are removed from the display list once they move off the stage. Obviously, they still remain in memory, but they are just tiny little sprites and I remove the ENTER_FRAME listener for each of them once they are no longer needed, so I don’t understand what is causing the system performance lag… any ideas? I can certainly post any snippets of code you might find useful - just let me know. Here’s my class for the Ball for starters…

package {

    import flash.display.Sprite;
    import flash.events.Event;
    import flash.display.graphics;
    
    public class Ball extends Sprite {
        
        private var ball_mc = new Sprite();
        private var rad: Number;
        private var dx: Number;
        private var dy: Number;        
        private var right_boundary = 550;
        private var left_boundary = 0;
        private var bottom_boundary = 475;
        private var top_boundary = 0;
        
        
        
        public function Ball(_xSpot, _ySpot, _radius) {
            
            rad = _radius;
            
            ball_mc.x = _xSpot;
            ball_mc.y = _ySpot;
            
            ball_mc.graphics.beginFill("0x0000dd");
            ball_mc.graphics.drawCircle(0,0,rad);
            addChild(ball_mc);
            
            var x_dist = right_boundary/2 - ball_mc.x;
            var y_dist = bottom_boundary/2 - ball_mc.y;      
    
            dx = x_dist/100;
            dy = y_dist/100;

            ball_mc.addEventListener(Event.ENTER_FRAME, moveBall);
            
        }
        
        public function moveBall(event) {
            this.x += dx;
            this.y += dy;
            
            if(dx > 0 && ball_mc.x > right_boundary) {
                removeChild(event.currentTarget);
                event.currentTarget.removeEventListener(Event.ENTER_FRAME, moveBall);
            }
            if(dx < 0 && ball_mc.x < left_boundary) {
                removeChild(event.currentTarget);
                event.currentTarget.removeEventListener(Event.ENTER_FRAME, moveBall);
            }
            if(dy > 0 && ball_mc.y > bottom_boundary) {
                removeChild(event.currentTarget);
                event.currentTarget.removeEventListener(Event.ENTER_FRAME, moveBall);
            }
            if(dy < 0 && ball_mc.y < top_boundary) {
                removeChild(event.currentTarget);
                event.currentTarget.removeEventListener(Event.ENTER_FRAME, moveBall);
            }
            
        }

        
    }
}

Thanks!