import com.stevensacks.utils.ObservableClass; import mx.utils.Delegate; class com.stevensacks.galapagos.assets.AbstractAsset extends ObservableClass { public var id:String; private var _src:String; private var _loaded:Boolean; private var _type:String; private var progressInterval:Number; function AbstractAsset() { // } public function set src(s:String):Void { _src = s; _type = String(_src.split(".").pop()).toUpperCase(); } public function get src():String { return _src; } public function get loaded():Boolean { return _loaded; } public function get type():String { return _type; } private function loadBegin():Void { clearInterval(progressInterval); progressInterval = setInterval(this, "updateProgress", 10); } private function updateProgress():Void { var bLoaded:Number = getBytesLoaded(); var bTotal:Number = getBytesTotal(); var perc:Number = Math.round((bLoaded / bTotal) * 100); dispatchEvent({type:"progress", loaded:bLoaded, total:bTotal, perc:perc}); if (bTotal > 4 && perc == 100) loadComplete(); } private function loadComplete():Void { clearInterval(progressInterval); _loaded = true; dispatchEvent({type:"complete"}); } public function load():Void {} private function getBytesLoaded():Number {} private function getBytesTotal():Number {} }