How to create a background image preloader

Hi everyone,

Sorry if this has already been discussed, I couldn’t find it anywhere.

I have a preloader for the index.swf file and it works perfectly, however, my background image will be very big so I don’t want to insert the background image inside the swf file, instead, I will load it externally.

I have a MyStage class (see the code below - yes, it’s not that optimized yet but it works) and in my Index class I call it like this

var mystage:MyStage = new MyStage(stage, "image6.jpg");

The problem is that at this point I don’t have a second preloader inside my Index class for the background image and that’s what I want to built.

I know how to do it but I don’t know how to do it relating it to the MyStage class (I need to resize the background image). I’m using the MyStage class for everything on my project so I want to use it also for the background image.

I was able to built it the usual way but I want to relate it to the MyStage class for resizing etc. My problem is that I can’t pass the loader.content to my MyStage class, as you can see, it needs to be a String.

Any ideas how to do this?


package classes {
    
    import flash.display.*;
    import flash.events.*;
    import flash.net.URLRequest;
    import flash.display.Sprite;
	
	public class MyStage{
	private var stage:Stage;
        private var holder:Sprite;
        private var img;

        private var loader:Loader = new Loader;
        private var request:URLRequest;

        function MyStage(stageRef:Stage, url:String) {
            stage = stageRef;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
       
            request = new URLRequest(url);

            configureListeners(loader.contentLoaderInfo);
            loader.load(request);
        }
		
		private function configureListeners(dispatcher:IEventDispatcher): void {
            dispatcher.addEventListener(Event.COMPLETE, completeHandler);
		}
		
	    private function completeHandler(event:Event): void {
   	    stage.addEventListener(Event.RESIZE, stageResized);
            var loader2:Loader = Loader(event.target.loader);
            img = (loader2.content);
            holder = new Sprite();

            img.y -= img.height;
            img.smoothing = true;
            stage.addChildAt(holder, 0);
            holder.addChild(img);
			
	    holder.y = stage.stageHeight;

            if (holder.width < stage.stageWidth){
              holder.width = stage.stageWidth;
			  holder.scaleY = holder.scaleX;
            }
			
			if (holder.height > stage.stageHeight) {
				holder.height = stage.stageHeight;
				holder.scaleX = holder.scaleY;
			}
			
			if (holder.height < stage.stageHeight){
				holder.height = stage.stageHeight;
				holder.scaleX = holder.scaleY;
			}
			if (holder.width < stage.stageWidth) {
				holder.width = stage.stageWidth;
				holder.scaleY = holder.scaleX;
			}
        }        
 
        private function stageResized(event:Event): void {
			
			holder.y = stage.stageHeight;
			
			if (holder.width < stage.stageWidth){
              holder.width = stage.stageWidth;
			  holder.scaleY = holder.scaleX;
            }
			
			if (holder.height > stage.stageHeight) {
				holder.height = stage.stageHeight;
				holder.scaleX = holder.scaleY;
			}
			if (holder.height < stage.stageHeight){
				holder.height = stage.stageHeight;
				holder.scaleX = holder.scaleY;
			}
			
			if (holder.width < stage.stageWidth) {
				holder.width = stage.stageWidth;
				holder.scaleY = holder.scaleX;
			}
        }
	}
}

Thanks in advance.