Advertisement
fruffl

Preloader

Jan 27th, 2012
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import mx.events.EventDispatcher;
  2. class com.tri4m.framework.data.loader.Progress extends MovieClip
  3. {
  4.     private var addEventListener:Function;
  5.     private var removeEventListener:Function;
  6.     private var dispatchEvent:Function;
  7.     private var __url:String;
  8.     private var __timeStart:Number;
  9.     private var __timeTaken:Number;
  10.     private var __isTimeOut:Boolean = false;
  11.     private var __percentLoaded:Number;
  12.     private var __bytesLoaded:Number;
  13.     private var __bytesTotal:Number;
  14.     private var __errorCode:String;
  15.     private var __httpStatus:Number;
  16.     private var __width:Number;
  17.     private var __height:Number;
  18.     private var timeoutMS:Number = 5000;
  19.     private var execOnStart:Function;
  20.     private var execOnError:Function;
  21.     private var execOnLoad:Function;
  22.     private var execOnComplete:Function;
  23.     private var execOnInit:Function;
  24.     private var execOnTimeout:Function;
  25.     private var onLoadStart:Function;
  26.     private var onLoadError:Function;
  27.     private var onLoadProgress:Function;
  28.     private var onLoadComplete:Function;
  29.     private var onLoadInit:Function;
  30.     private var mcLoader:MovieClipLoader;
  31.     private var dummy_mc:MovieClip;
  32.     /**
  33.      * getter
  34.      */
  35.     public function get url():String
  36.     {
  37.         return this.__url;
  38.     }
  39.     public function get timeStart():Number
  40.     {
  41.         return this.__timeStart;
  42.     }
  43.     public function get timeTaken():Number
  44.     {
  45.         return this.__timeTaken;
  46.     }
  47.     public function get isTimeOut():Boolean
  48.     {
  49.         return this.__isTimeOut;
  50.     }
  51.     public function get percentLoaded():Number
  52.     {
  53.         return this.__percentLoaded;
  54.     }
  55.     public function get bytesLoaded():Number
  56.     {
  57.         return this.__bytesLoaded;
  58.     }
  59.     public function get bytesTotal():Number
  60.     {
  61.         return this.__bytesTotal;
  62.     }
  63.     public function get errorCode():String
  64.     {
  65.         return this.__errorCode;
  66.     }
  67.     public function get httpStatus():Number
  68.     {
  69.         return this.__httpStatus;
  70.     }
  71.     public function get width():Number
  72.     {
  73.         return this.__width;
  74.     }
  75.     public function get height():Number
  76.     {
  77.         return this.__height;
  78.     }
  79.     /**
  80.      * callbacks
  81.      */
  82.     public function set callbackOnStart(callback:Function):Void
  83.     {
  84.         this.execOnStart = callback;
  85.     }
  86.     public function set callbackOnError(callback:Function):Void
  87.     {
  88.         this.execOnError = callback;
  89.     }
  90.     public function set callbackOnLoad(callback:Function):Void
  91.     {
  92.         this.execOnLoad = callback;
  93.     }
  94.     public function set callbackOnComplete(callback:Function):Void
  95.     {
  96.         this.execOnComplete = callback;
  97.     }
  98.     public function set callbackOnInit(callback:Function):Void
  99.     {
  100.         this.execOnInit = callback;
  101.     }
  102.     public function set callbackOnTimeout(callback:Function):Void
  103.     {
  104.         this.execOnTimeout = callback;
  105.     }
  106.     /**
  107.      * environment
  108.      */
  109.     public function set timeoutOn(ms:Number):Void
  110.     {
  111.         this.timeoutMS = ms;
  112.     }
  113.     /**
  114.      *
  115.      */
  116.     public function Progress(target:MovieClip)
  117.     {
  118.         this.dummy_mc = target.createEmptyMovieClip("dummy_mc", 0);
  119.         this.dummy_mc._visible = false;
  120.         this.dummy_mc._alpha = 0;
  121.        
  122.         EventDispatcher.initialize(this);
  123.         this.mcLoader = new MovieClipLoader();
  124.         this.mcLoader.addListener(this);
  125.         this.onLoadStart = function(target_mc:MovieClip):Void
  126.         {
  127.             this.__timeStart = getTimer();
  128.             this.execOnStart();
  129.         };
  130.         this.onLoadError = function(target_mc:MovieClip, errorCode:String, httpStatus:Number):Void
  131.         {
  132.             this.__errorCode = errorCode;
  133.             this.__httpStatus = httpStatus;
  134.             this.execOnError();
  135.         };
  136.         this.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void
  137.         {
  138.             this.__bytesLoaded = bytesLoaded;
  139.             this.__bytesTotal = bytesTotal;
  140.             this.__timeTaken = getTimer() - this.__timeStart;
  141.             if (this.__timeTaken > this.timeoutMS)
  142.             {
  143.                 this.__isTimeOut = true;
  144.                 this.execOnTimeout();
  145.                 this.mcLoader.unloadClip(target_mc);
  146.                 return;
  147.             }
  148.             this.__percentLoaded = this.percentage(bytesLoaded, bytesTotal);
  149.             this.execOnLoad();
  150.         };
  151.         this.onLoadComplete = function(target_mc:MovieClip, httpStatus:Number):Void
  152.         {
  153.             this.__httpStatus = httpStatus;
  154.             this.execOnComplete();
  155.         };
  156.         this.onLoadInit = function(target_mc:MovieClip):Void
  157.         {
  158.             this.__width = dummy_mc._width;
  159.             this.__height = dummy_mc._height;
  160.             this.execOnInit();
  161.         };
  162.     }
  163.     public function loadClip(URL:String):Void
  164.     {
  165.         this.__url = URL;
  166.         this.mcLoader.loadClip(this.__url, this.dummy_mc);
  167.     }
  168.     private function percentage(__bytesLoaded:Number, __bytesTotal:Number):Number
  169.     {
  170.         return Math.floor((__bytesLoaded / __bytesTotal * 100) * 10000) / 10000;
  171.     }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement