I’m currently working on a program wherein I use a main class to load external swf files using loader objects. I’m trying to synchronize the unloading of 1 menu with the loading of another using Event.COMPLETE event listeners on the loaders, but it’s still giving me about a second of hang between the time that it unloads 1 menu and loads the next. Can anyone reccomend a better approach to accomplish this without the hang?
package com.JEnnis{
import flash.net.*;
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import com.greensock.*
import com.greensock.easing.*;
import com.greensock.TimelineLite;
import com.greensock.TweenLite;
import com.greensock.plugins.*;
import flash.net.URLRequest;
import flash.events.Event;
TweenPlugin.activate([FramePlugin]);
public class Main extends MovieClip{
public var contentloader:Loader;
public var contentloader2:Loader;
public var activeloader:int;
public var loadbar_mc:MovieClip;
public function Main(){
init();
}
public function init():void{
loadbar_mc.alpha = 0;
contentloader = new Loader();
contentloader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,handleloadprogress);
contentloader.contentLoaderInfo.addEventListener(Event.COMPLETE,handleloadcomplete);
//These events are dispatched from the loaded .swf
contentloader.addEventListener("LOAD_PROGRAMMING", loadprogramming);
contentloader.addEventListener("LOAD_ANIMATION", loadanimation);
contentloader.addEventListener("LOAD_MENU", loadmainmenu);
this.addChild(contentloader);
contentloader.name = "Loader 1";
contentloader2 = new Loader();
contentloader2.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,handleloadprogress);
contentloader2.contentLoaderInfo.addEventListener(Event.COMPLETE,handleloadcomplete);
//These events are dispatched from the loaded .swf
contentloader2.addEventListener("LOAD_PROGRAMMING", loadprogramming);
contentloader2.addEventListener("LOAD_ANIMATION", loadanimation);
contentloader2.addEventListener("LOAD_MENU", loadmainmenu);
this.addChild(contentloader2);
contentloader2.name = "Loader 2";
activeloader = 2;
loadcontent(new URLRequest("MainMenu.swf"));
}
public function handleloadprogress(e: ProgressEvent):void{
var percent:Number = Math.round((e.bytesLoaded / e.bytesTotal));
percent = Math.max(1,percent);
percent = Math.min(percent,100);
loadbar_mc.gotoAndStop(percent);
}
public function handleloadcomplete(e:Event):void{
TweenLite.to(loadbar_mc, 1, {alpha:0, ease:Expo.easeOut});
trace("Load completed from ", e.target.loader.name);
if(activeloader == 1){
contentloader2.alpha = 0;
contentloader.alpha = 1;
}
else{
contentloader2.alpha = 1;
contentloader.alpha = 0;
}
unloadcontent();
}
public function loadcontent(req:URLRequest):void{
if(activeloader == 1){
loadbar_mc.alpha = 1;
contentloader2.load(req);
activeloader = 2;
}
else{
loadbar_mc.alpha = 1;
contentloader.load(req);
activeloader = 1;
}
trace("Active loader : ",activeloader);
}
public function unloadcontent():void{
if(activeloader == 1){
contentloader2.unload();
}
else{
contentloader.unload();
}
}
public function loadmainmenu():void{
trace("loadmainmenu");
loadcontent(new URLRequest("MainMenu.swf"));
}
public function loadprogramming(e:Event){
trace("loadprogramming");
loadcontent(new URLRequest("Programming.swf"));
}
public function loadanimation(e:Event){
trace("loadanimation");
loadcontent(new URLRequest("Animation.swf"));
}
}
}