package com.tools { import flash.display.*; import flash.events.*; import flash.net.URLRequest; import flash.text.TextField; import flash.net.FileReference; import fl.transitions.easing.*; import flash.utils.*; /** * Main Constructor * * @params * @return Date([yearOrTimevalue:Number], [month:Number], [date:Number], [hour:Number], [minute:Number], [second:Number], [millisecond:Number]) */ public class iLoader extends MovieClip { private var _loader:Loader = new Loader(); private var _loaderInfo:LoaderInfo; private var _verbose:Boolean = true; private var _loadProgress:Number = 0; private var _bytesLoaded:Number = 0; private var _bytesTotal:Number = 0; private var p_obj:Object = new Object(); private var p2_obj:Object = new Object(); private var _scopes:Object; private var _count:Number = 0; public function iLoader():void { } /** * Needs Documenting * * @params * @return */ public function addLoader(p_scopes:Object, p_parameters:Object):Boolean { p_obj = p_parameters; _scopes = p_scopes; for (var prop in p_obj) { trace("myObject."+prop+" = "+p_obj[prop]); } //trace("GAME" + p_scopes); if (!Boolean(p_scopes)) return false; var i:Number, j:Number, istr:String; var rScopes:Array; // List of objects to tween if (p_scopes is Array) { // The first argument is an array rScopes = p_scopes.concat(); } else { // The first argument(s) is(are) object(s) rScopes = [p_scopes]; } init_listner(); return true; } /** * Needs Documenting * * @params * @return */ public function init() { //gStart(); } /** * Needs Documenting * * @params * @return */ public function init_listner():void { trace("JIJIIJIJJJIIJJIJIJIIJIJJIJIJIJIIJIJ " + p_obj.path); _verbose = p_obj.display; //if(_count == 0){ //_loader.name = String(_count); //_loaderInfo = _loader.contentLoaderInfo; _loader.contentLoaderInfo.addEventListener(Event.OPEN, onOpen, false, 0, true); _loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress, false, 0, true); _loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatusEvent, false, 0, true); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError, false, 0, true); _loader.contentLoaderInfo.addEventListener(Event.INIT, onInit, false, 0, true); _loader.contentLoaderInfo.addEventListener(Event.UNLOAD, onUnloadContent, false, 0, true); //} try { _loader.load(new URLRequest(p_obj.path)); } catch (err:Error) { trace("Unable to load content:\n" + err.message); } _count++; } private function onProgress(evt:ProgressEvent):void { var loadPercent:int = Math.round((evt.bytesLoaded / evt.bytesTotal) * 100); _bytesLoaded = evt.bytesLoaded; _bytesTotal = evt.bytesTotal; _loadProgress = loadPercent; //var file = evt.currentTarget; //trace("progressHandler: name=" + evt.currentTarget + " bytesLoaded=" + evt.bytesLoaded + " bytesTotal=" + evt.bytesTotal); if (_verbose) { trace(_loadProgress); if(p_obj.progress != undefined){ _progress(evt); } } } public function get pPercent():Number { return _loadProgress; } public function get pInfo():Array { return [_loadProgress, _bytesLoaded, _bytesTotal]; } private function onComplete(evt:Event):void { _loader.contentLoaderInfo.removeEventListener(Event.OPEN, onOpen); _loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgress); _loader.contentLoaderInfo.removeEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatusEvent); _loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete); _loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); _complete(evt); } private function onOpen(evt:Event):void { if (_verbose) { trace("Loading has begun."); } } private function onHTTPStatusEvent(evt:HTTPStatusEvent):void { if (_verbose) { /* trace("HTTP status code: " + evt.status); */ } } private function onIOError(evt:IOErrorEvent):void { if (_verbose) { trace("A loading error occurred:\n", evt.text); } } private function onInit(evt:Event):void { _loader.contentLoaderInfo.removeEventListener(Event.INIT, onInit); //properties of loaded asset now accessable if (_verbose) { trace("Content initialized. Properties:"); trace(" url:", evt.target.url); trace(" Same Domain:", evt.target.sameDomain); if (evt.target.contentType == "application/x-shockwave-flash") { trace(" SWF Version:", evt.target.swfVersion); trace(" AS Version:", evt.target.actionScriptVersion); trace(" Frame Rate:", evt.target.frameRate); } } } private function onUnloadContent(evt:Event):void { _loader.contentLoaderInfo.removeEventListener(Event.UNLOAD, onUnloadContent); if (_verbose) { /* trace("unLoadHandler:\n", evt); */ } } /** * Used to update user function when it is completed * * @params * @return */ private function _complete(item:Event):void { //trace(_loader.name) // Need to get Loader from LoaderInfo!! var loaderInfo:LoaderInfo = item.target as LoaderInfo; // Important code below: var myName:String = loaderInfo.loader.name; //trace('>LOADER >>>>>>>>>>>>> ' + this.name) try { _scopes[p_obj.onComplete](item); } catch(e:Error) { //trace('ERROR' + e) } } /** * Used to update user function passed through the control * * @params * @return */ private function _progress(item:Event):void { //var loaderInfo:LoaderInfo = item.currentTarget as LoaderInfo; //trace("PROGRESS ININNINNINNIIN " + item.currentTarget) //trace('p2_obj[_count-1].progress ' + _scopes[p2_obj[0].progress]); try { //_scopes[p2_obj[0].progress](); } catch(e:Error) { //trace('ERROR PROGRESS ' + e) } } } }