So I've made a circular preloader made with some shapes and masks. Everything like this works. What I want to do now is add a movieclip of animations to the stage and make it look like this movie clip is in the progress circle of the preloader. So what I did is create a movieclip container to hold all of the shapes that animate on loading. I then used that movieclip container to mask the movieclip of animations.

Below is my actionscript. Down in the area where it says // Particles is where the mask is applied. It's line 143.

What happens when published is the movieclip of animations (the particles) loads over the shapes, but all of their masks are gone. So it's as if when I applied the mask to the container, all of it's children and their masks stopped working. Is there a way to correctly do this?

Code:
package body {

	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.utils.Timer;

	import com.greensock.*;
	import com.greensock.easing.*;
	
	import com.motionreactor.pulseparticles.*
	
	public class PreLoader extends MovieClip {

		//CUSTOM VARIABLES
		private var stage_color = 0xe5e5e5;		        //the color of the stage or the color of the background the preloader will sit on.
		private var background_color = 0xc6c6c6;		//color of the ghost or faint silhouette. 
		private var circle_color = 0x4d4d4d;		    //color of the circle
		private var inner_radius:Number = 40;			//the inner radius of the circle. 
		private var outer_radius:Number = 100;			//the outer radius of the circle. 
		private var rotate_direction:String = "cw"; 	//"ccw" is counter clockwise & "cw" is clockwise.
		private var transition_out:String = "fade"; 	//"flash" or "fade"
		
		public var preloader:Sprite = new Sprite();
		public var left_masked:Sprite = new Sprite();
		public var right_masked:Sprite = new Sprite();
		
		public function PreLoader():void {
		
			// the dot_mc is the symbol that's on the timeline. Because it's only used for placement it's hidden.
			dot_mc.visible = false;
		
			// create the "preloader" sprite to hold everything
			addChild(preloader);
			preloader.x = stage.stageWidth *.5;
			preloader.y = stage.stageHeight *.5;
			preloader.blendMode = "layer";
		
			// create the background circle
			var background_circle:Sprite = new Sprite();
			preloader.addChild(background_circle);
			
			var background_outer:Shape = new Shape();
			background_outer.graphics.beginFill(background_color);
			background_outer.graphics.drawCircle(0,0,outer_radius);
			background_outer.graphics.endFill();
			background_circle.addChild(background_outer);
			
			var background_inner:Shape = new Shape();
			background_inner.graphics.beginFill(stage_color);
			background_inner.graphics.drawCircle(0,0,inner_radius);
			background_inner.graphics.endFill();
			background_circle.addChild(background_inner);
		
		
			// Create the Progress Container Mask
			/////////////////////////////////////////////////////////////////////////////
			var circleContainer:MovieClip = new MovieClip();
			preloader.addChild(circleContainer);
			
			// Create the left half
			/////////////////////////////////////////////////////////////////////////////
			circleContainer.addChild(left_masked);
			
			var left_circle:Sprite = new Sprite();
			left_masked.addChild(left_circle);
			
			var left_outer:Shape = new Shape();
			left_outer.graphics.beginFill(circle_color);
			left_outer.graphics.drawCircle(0,0,outer_radius);
			left_outer.graphics.endFill();
			left_circle.addChild(left_outer);
			
			var left_inner:Shape = new Shape();
			left_inner.graphics.beginFill(stage_color);
			left_inner.graphics.drawCircle(0,0,inner_radius);
			left_inner.graphics.endFill();
			left_circle.addChild(left_inner);
			
			var left_rec:Shape = new Shape();
			left_rec.graphics.beginFill(0x000000);
			left_rec.graphics.drawRect(0, -outer_radius, outer_radius* 2, outer_radius* 2);
			left_rec.graphics.endFill();
			left_masked.addChild(left_rec);
			 
			left_circle.mask = left_rec;
			
			var left_rec2:Shape = new Shape();
			left_rec2.graphics.beginFill(0x000000);
			left_rec2.graphics.drawRect(-outer_radius* 2, -outer_radius, outer_radius* 2, outer_radius* 2);
			left_rec2.graphics.endFill();
			circleContainer.addChild(left_rec2);
			
			left_masked.mask = left_rec2;
		
			// create the right half
			/////////////////////////////////////////////////////////////////////////////
			circleContainer.addChild(right_masked);
			
			var right_circle:Sprite = new Sprite();
			right_masked.addChild(right_circle);
			
			var right_outer:Shape = new Shape();
			right_outer.graphics.beginFill(circle_color);
			right_outer.graphics.drawCircle(0,0,outer_radius);
			right_outer.graphics.endFill();
			right_circle.addChild(right_outer);
			
			var right_inner:Shape = new Shape();
			right_inner.graphics.beginFill(stage_color);
			right_inner.graphics.drawCircle(0,0,inner_radius);
			right_inner.graphics.endFill();
			right_circle.addChild(right_inner);
			
			var right_rec:Shape = new Shape();
			right_rec.graphics.beginFill(0x000000);
			right_rec.graphics.drawRect(-outer_radius* 2, -outer_radius, outer_radius* 2, outer_radius* 2);
			right_rec.graphics.endFill();
			right_masked.addChild(right_rec);
			
			right_circle.mask = right_rec;
			
			var right_rec2:Shape = new Shape();
			right_rec2.graphics.beginFill(0x000000);
			right_rec2.graphics.drawRect(0, -outer_radius, outer_radius* 2, outer_radius* 2);
			right_rec2.graphics.endFill();
			circleContainer.addChild(right_rec2);
			
			right_masked.mask = right_rec2;

			// Particles
			/////////////////////////////////////////////////////////////////////////////
			var myPulseParticles = new PulseParticles(206, 206, 80, 1, SpawnType.RANDOM);
			// Adding Particle Types
			myPulseParticles.addParticle(25, 0xFFFFFF, 1, 30, 150, 1, 0.02);
			myPulseParticles.addParticle(15, 0x0066FF, 1, 60, 150, 1, 0.02, BlendMode.OVERLAY);
			myPulseParticles.addParticle(25, 0x0033FF, 1, 30, 150, 1, 0.01, BlendMode.SCREEN);
			// Add to the Display List
			circleContainer.addChild(myPulseParticles);
			myPulseParticles.x = -103;
			myPulseParticles.y = -103;
			// Mask it
			myPulseParticles.mask = circleContainer;
			// Starting Particle Spawning
			myPulseParticles.startSpawn();

			// Add event listeners for the preload
			this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, loadingbits);
			this.loaderInfo.addEventListener(Event.COMPLETE, loadingcomplete);
		}
		
			// while loading…
			/////////////////////////////////////////////////////////////////////////////
			public function loadingbits(myevent:Event):void {
				MovieClip(root).stop();//stop the main timeline
				var myprogress:Number = myevent.target.bytesLoaded/myevent.target.bytesTotal;
				
				// counter clockwise movment
				if (rotate_direction == "ccw") {
					if (myprogress <= .5) {
						trace("left"+myprogress);
						left_masked.rotation = -3.6 * (myprogress*100);
					} else {
						trace("right"+myprogress);
						left_masked.rotation = -180;
						right_masked.rotation = -3.6 * ((myprogress*100) - 50);
					}
					
				// clockwise movement
				} else {
					if (myprogress <= .5) {
						right_masked.rotation = 3.6 * ((myprogress*100));
					} else {
						right_masked.rotation = 180;
						left_masked.rotation = (3.6 * (myprogress*100))-180;
					}
				}
			}
			
		/////////////////////////////////////////////////////////////////////////////
		//100%… loaded
		private function loadingcomplete(event:Event):void {
		
			this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, loadingbits);
			this.loaderInfo.removeEventListener(Event.COMPLETE, loadingcomplete);
		
			if (transition_out == "flash") {
				flashOut();
			} else {
				fadeOut();
			}
		}
		
		//transitions out////////////////////////////////////////////////////////////
		public function flashOut():void {
			var myCount:Number = 0;
			var myTimer:Timer =new Timer(25,100);
			myTimer.start();
			myTimer.addEventListener(TimerEvent.TIMER, afterCount);
			
			function afterCount(myevent:TimerEvent):void {
				 myCount += .1;
				 if (myCount > .5 && myCount <= .7) {
					preloader.alpha = 0;
				 } else if (myCount > .8 && myCount <= 1) {
					preloader.alpha = 1;
				 } else if (myCount > 1.1 && myCount <= 1.3) {
					preloader.alpha = 0;
				 } else if (myCount > 1.4 && myCount <= 1.6) {
					preloader.alpha = 1;
				 } else if (myCount > 1.7 && myCount <= 1.9) {
					preloader.alpha = 0;
				 } else if (myCount > 2 && myCount <= 2.8) {
					preloader.alpha = 1;
				 } else if (myCount > 2.8 && myCount <= 3) {
					fadeDown();	
				 }
			}
			
			function fadeDown():void {
				myTimer.stop();
				myTimer.removeEventListener(TimerEvent.TIMER, afterCount);
				var myCount1:Number = 1;
				var myTimer1:Timer =new Timer(1,1000);
				myTimer1.start();
				myTimer1.addEventListener(TimerEvent.TIMER, afterCount1);
				
				function afterCount1(myevent:TimerEvent):void {
					myCount1 -= .02;
					preloader.alpha = myCount1;
					if (myCount1 <= -1) {
						moveMain();
					}
				}
				
				function moveMain():void {
					myTimer1.stop();
					myTimer1.removeEventListener(TimerEvent.TIMER, afterCount1);
					playMain();
				}
			}
		}
		
		public function fadeOut() {
			var myCount1:Number = 1;
			var myTimer1:Timer =new Timer(1,1000);
			myTimer1.start();
			myTimer1.addEventListener(TimerEvent.TIMER, afterCount1);
			
			function afterCount1(myevent:TimerEvent):void {
				myCount1 -= .02;
				preloader.alpha = myCount1;
				if(myCount1 <= -1){
					moveMain();
				}
			}
			
			function moveMain():void {
				myTimer1.stop();
				myTimer1.removeEventListener(TimerEvent.TIMER, afterCount1);
				playMain();
			}
		}
		
		private function playMain():void {
			MovieClip(root).play();
		}
	}	
}