[AS3] SwfLoader
package {
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.events.EventDispatcher;
public class SwfLoader extends EventDispatcher {
public static var LOADED:String = “loaded”;
private var _myLoader:Loader;
private var _myLoaderInfo:LoaderInfo;
private var _myURLRequest:URLRequest;
private var _mySwf:Object;
private var _mySwfClass:Object;
private var _mySwfPercentLoaded:uint;
private var _myPreLoaderBar:Object;
public function SwfLoader(url:String, preLoaderBar:Object=null) {
_myLoader = new Loader();
_myURLRequest = new URLRequest(url);
_myPreLoaderBar = preLoaderBar;
_myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, OnProgressHandler);
_myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, OnLoadComplete);
_myLoader.load(_myURLRequest);
}
public function get PercentLoaded():uint {
return _mySwfPercentLoaded;
}
public function get Swf():Object {
return _mySwf;
}
public function get SwfClass():Object {
return _mySwfClass;
}
/* EVENT HANDLER *************************************************************************/
private function OnProgressHandler(e:ProgressEvent):void {
if(_myPreLoaderBar != null) { // if a preloader bar has been given, pass percentage loaded
_mySwfPercentLoaded = uint( (e.bytesLoaded / e.bytesTotal) * 100 );
_myPreLoaderBar.SetPercent(_mySwfPercentLoaded);
}
}
private function OnLoadComplete(e:Event):void {
_mySwf = e.target.content; // same as _myLoader.content;
_myLoaderInfo = e.target as LoaderInfo;
_mySwfClass = _myLoaderInfo.content;
dispatchEvent(new Event(SwfLoader.LOADED));
}
}
}
