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.