All pastes #459751 Raw Edit

Mine

public text v1 · immutable
#459751 ·published 2007-04-26 17:42 UTC
rendered paste body
import com.stevensacks.utils.ObservableClass;

class com.stevensacks.galapagos.assets.AbstractAsset extends ObservableClass
{
	public var id:String;
	public var src:String;
	public var title:String;
	public var totalBytes:Number;
	
	private var _loading:Boolean;
	private var _loaded:Boolean;
	private var progressInterval:Number;
	
	function AbstractAsset()
	{
		super();
		_loaded = false;
		_loading = false;
	}
	public function get loaded():Boolean
	{
		return _loaded;
	}
	public function get loading():Boolean
	{
		return _loading;
	}
	private function loadBegin():Void
	{
		_loading = true;
		clearInterval(progressInterval);
		progressInterval = setInterval(this, "updateProgress", 10);
	}
	private function updateProgress():Void
	{
		var l:Number = getBytesLoaded();
		var t:Number = totalBytes || getBytesTotal();
		var p:Number = l / t;
		dispatchEvent({type:"progress", id:id, title:title, loaded:l, total:t, perc:p});
		if (t > 4 && p == 100) loadComplete();
	}
	private function loadComplete():Void
	{
		cleanup();
		_loaded = true;
		_loading = false;
		clearInterval(progressInterval);
		dispatchEvent({type:"complete", id:id});
	}
	// stub methods for concrete classes
	public function load():Void {}
	public function getBytesLoaded():Number { return 0; }
	public function getBytesTotal():Number { return 0; }
	private function cleanup():Void {}
}