1  /**
     2   * com.sekati.load.BaseLoader
     3   * @version 1.2.0
     4   * @author jason m horwitz | sekati.com
     5   * Copyright (C) 2007  jason m horwitz, Sekat LLC. All Rights Reserved.
     6   * Released under the MIT License: http://www.opensource.org/licenses/mit-license.php
     7   */
     8   
     9  import com.sekati.core.CoreObject;
    10  import com.sekati.core.FWDepth;
    11  import com.sekati.display.BaseClip;
    12  import com.sekati.display.StageDisplay;
    13  import com.sekati.events.FramePulse;
    14  import com.sekati.utils.ClassUtils;
    15  
    16  /**
    17   * Generic _root Preloader - stops movie, preloads, then advances to defined frame label.
    18   * {@code Usage: 
    19   * var preload:BaseLoader = new BaseLoader("finalFrameLabel");
    20   * }
    21   */
    22  class com.sekati.load.BaseLoader extends CoreObject {
    23  
    24  	private var _nextFrameLabel:String;
    25  	private var _loader:MovieClip;
    26  	private var _isLoaded:Boolean;
    27  	private var _l:Number;
    28  	private var _t:Number;
    29  	private var _p:Number;
    30  
    31  	/**
    32  	 * BaseLoader Constructor.
    33  	 * @param frameLabel (String) the root framelabel to advance to when preload is complete [default: "bootstrap"]
    34  	 * @return Void
    35  	 */
    36  	public function BaseLoader(frameLabel:String) {
    37  		super( );
    38  		_nextFrameLabel = (!frameLabel) ? "bootstrap" : frameLabel;
    39  		_isLoaded = false;
    40  		_level0.stop( );
    41  		_loader = ClassUtils.createEmptyMovieClip( com.sekati.display.BaseClip, _root, "___BaseLoader", {_depth:FWDepth.BaseLoader} );
    42  		FramePulse.$.addFrameListener( this );
    43  	}
    44  
    45  	private function _onEnterFrame():Void {
    46  		_l = _level0.getBytesLoaded( );
    47  		_t = _level0.getBytesTotal( );
    48  		_p = Math.floor( _l / _t * 100 );
    49  		if (_t > 5 && _l >= _t && StageDisplay.$.isReady) {
    50  			_isLoaded = true;
    51  			_level0.gotoAndStop( _nextFrameLabel );
    52  			this.destroy( );
    53  		}
    54  	}
    55  
    56  	/**
    57  	 * Percent Loaded getter.
    58  	 * @return Number
    59  	 */
    60  	public function get percent():Number {
    61  		return _p;	
    62  	}
    63  
    64  	/**
    65  	 * bytesLoaded getter.
    66  	 * @return Number
    67  	 */
    68  	public function get bytesLoaded():Number {
    69  		return _l;	
    70  	}
    71  
    72  	/**
    73  	 * bytesTotal getter.
    74  	 * @return Number
    75  	 */
    76  	public function get bytesTotal():Number {
    77  		return _t;	
    78  	}
    79  
    80  	/**
    81  	 * isLoaded getter.
    82  	 * @return Boolean
    83  	 */
    84  	public function get isLoaded():Boolean {
    85  		return _isLoaded;	
    86  	}
    87  
    88  	/**
    89  	 * Destroy the BaseLoader.
    90  	 * @return Void
    91  	 */	
    92  	public function destroy():Void {
    93  		FramePulse.$.removeFrameListener( this );
    94  		_loader.destroy( );
    95  		super.destroy( );
    96  	}
    97  }