LET'S MAKE A PRELOADER.


















THE CODE


package 
{
	// code stolen from somewhere. Sorry. :(
	// It was like a generic preloader code that people could use for Ludum Dare.
	// I forget who I got it from though.
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	import flash.utils.getDefinitionByName;
	
	public class Preloader extends MovieClip 
	{
		private var loader:Sprite = new Sprite();
		private var border:Sprite = new Sprite();
		private var text:TextField = new TextField();
		
		private const loaderWidth:int = 400;
		private const loaderHeight:int = 32;
		
		private const SWF_WIDTH:int = 720;
		private const SWF_HEIGHT:int = 480;
		
		private const loaderColor:uint = 0xffffff;
		private const textColor:uint = 0xbbbbbb;
		private const backgroundColor:uint = 0x000000;
		
		private const main:String = "Main";
		private var loaded:Number = 0;
		
		public function Preloader() 
		{
			// loader information
			stage.addEventListener(Event.ENTER_FRAME, progress);
			
			stage.align = StageAlign.TOP_LEFT;
			stage.quality = StageQuality.HIGH;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.displayState = StageDisplayState.NORMAL;	
			
			// show loader
			addChild(loader);
			loader.x = (SWF_WIDTH / 2) - (loaderWidth / 2) + 4;
			loader.y = (SWF_HEIGHT / 2) - (loaderHeight / 2) + 4;
			
			addChild(border);
			border.x = (SWF_WIDTH / 2) - (loaderWidth / 2);
			border.y = (SWF_HEIGHT / 2) - (loaderHeight / 2);
		
			//addChild(text);
			//text.x = (720 / 2) - (loaderWidth / 2);
			//text.y = (480 / 2) - (loaderHeight / 2) - 30;
			//text.textColor = textColor;
			
			// render background
			graphics.beginFill(backgroundColor, 1);
			graphics.drawRect(0, 0, SWF_WIDTH, SWF_HEIGHT);
			graphics.endFill();
			
			// render the border
			border.graphics.clear();
			border.graphics.lineStyle(2, loaderColor);
			border.graphics.drawRect(0, 0, loaderWidth, loaderHeight);
		}
		
		private function progress(e:Event):void 
		{
			// how much we've loaded thus far
			loaded = loaderInfo.bytesLoaded / loaderInfo.bytesTotal;
			
			// update loader graphic
			loader.graphics.clear();
			loader.graphics.beginFill(loaderColor);
			loader.graphics.drawRect(0, 0, loaded * (loaderWidth - 8), loaderHeight - 8);
			loader.graphics.endFill();
			
			// update text
			//text.text = "Loading: " + Math.ceil(loaded * 100) + "%";
			
			// done loading?
			if (loaderInfo.bytesLoaded >= loaderInfo.bytesTotal)
			{
				startup();
			}
		}
		
		private function startup():void 
		{
			// remove event listener(s)
			stage.removeEventListener(Event.ENTER_FRAME, progress);
			
			// hide loader
			stop();
			
			// remove all the children
			var i:int = numChildren;
			while (i --)
			{
				removeChildAt(i)
			}
			
			// go to the main class
			var mainClass:Class = getDefinitionByName(main) as Class;
			parent.addChild(new mainClass as MovieClip);
			
			// remove self
			parent.removeChild(this)
		}
		
	}
	
}

ENDING NOTES


My game went from: this to... THIS