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 progressInterval:Number;
function AbstractAsset()
{
super();
}
private function loadBegin():Void
{
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", asset:this, loaded:l, total:t, perc:p});
if (t > 4 && p == 100) loadComplete();
}
private function loadComplete():Void
{
clearInterval(progressInterval);
dispatchEvent({type:"complete", asset:this});
}
// stub methods for concrete classes
public function load():Void {}
public function getBytesLoaded():Number { return 0; }
public function getBytesTotal():Number { return 0; }
private function destroy():Void {}
}