[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));
}
}
}

Advertisement

~ by rotaercz on 2010-April-21.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

 
Follow

Get every new post delivered to your Inbox.