View Single Post
Nutrox's Avatar Nutrox Nutrox is offline Super Moderator 17 Creative Assets 2006-11-05 #15 Old  
013 - Loading, Bytes Per Second and ETA
 
The following code is an example of how you could calculate the value for "bytes per second" and "remaining time" when loading external movies or images etc.

I will wrap this up in a class soon.

ActionScript Code:
  1. var loadTarget:MovieClip;
  2. var loadTimer:Number;
  3. var loadTotal:Number;
  4.  
  5. function loadClip(target:MovieClip, url:String):Void {
  6.     loadTarget = target;
  7.     loadTimer  = getTimer();
  8.     loadTotal  = 0;
  9.     target.loadMovie(url);
  10.     this.onEnterFrame = updateLoadProgress;
  11. }
  12.  
  13. function updateLoadProgress():Void {
  14.     var bLoaded:Number = loadTarget.getBytesLoaded();
  15.     var bTotal:Number  = loadTarget.getBytesTotal();
  16.     if (bLoaded && bTotal) {
  17.         if (bLoaded == bTotal) {
  18.             this.onEnterFrame = null;
  19.             onLoadComplete();
  20.         }
  21.         else if (getTimer() - loadTimer >= 250) {
  22.             var bSec:Number = Math.round(bLoaded / (loadTotal / 1000));
  23.             var tRemaining:Number = Math.round((bTotal - bLoaded) / bSec);
  24.             onLoadProgress(bLoaded, bTotal, bSec, loadTotal, tRemaining);
  25.             loadTimer = getTimer();
  26.             loadTotal += 250;
  27.         }
  28.     }
  29. }
  30.  
  31. function onLoadProgress(bLoaded:Number, bTotal:Number, bSec:Number,
  32.                         tTotal:Number, tRemaining:Number):Void {
  33.     trace("loaded progress: " + bLoaded + "/" + bTotal);
  34.     trace("bytes per second (approx): " + bSec);
  35.     trace("total time (approx): " + tTotal + " seconds");
  36.     trace("remaining time (approx): " + tRemaining + " seconds");
  37.     trace("");
  38. }
  39.  
  40. function onLoadComplete():Void {
  41.     trace("loaded!");
  42. }
  43.  
  44. //
  45.  
  46. var container:MovieClip = this.createEmptyMovieClip("container", 0);
  47. var url:String = "external.swf";
  48.  
  49. loadClip(container, url);