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 {} }