here we go:here is how its used:Code://myMovieClipLoader class written by Matthew Robenolt //(c)2006 YDEK Productions //http://www.youdontevenknow.us class us.youdontevenknow.myMovieClipLoader { private static var _queue:Array; private static var mc_progresses:Array; private static var mcLoader:MovieClipLoader; private static var mcLoaderListener:Object; private static var howManyLoaded:Number = 0; private static var howManyStarted:Number = 0; private static var ids:Array; private static var currentLoadedBytes:Number = 0; private static var currentTotalBytes:Number = 0; private static var startLoadTime:Number; private static var loadDuration:Number; private static var _onAllLoadComplete:Function; private static var _onAllLoadProgress:Function; public function myMovieClipLoader() { _queue = new Array(); mc_progresses = new Array(); ids = new Array(); mcLoader = new MovieClipLoader(); mcLoaderListener = new Object(); mcLoader.addListener(mcLoaderListener); mcLoaderListener.onLoadComplete = oneLoaded; mcLoaderListener.onLoadProgress = updateProgress; mcLoaderListener.onLoadStart = downloadStarted; } private function downloadStarted(target_mc:MovieClip):Void { ids.push(String(target_mc)); mc_progresses[ids.length-1] = {downloaded:0, total:0}; howManyStarted++; } private function oneLoaded():Void { howManyLoaded++; //trace("loaded so far: "+howManyLoaded +"/"+_queue.length); if (howManyLoaded == _queue.length) { loadDuration = getTimer() - startLoadTime; _onAllLoadComplete(loadDuration); } } private function updateProgress(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void { var currentid:Number = 0; for (var i:Number = 0; i < ids.length; i++) { if (ids[i] == String(target_mc)) { currentid = i; break; } } mc_progresses[currentid].downloaded = bytesLoaded; mc_progresses[currentid].total = bytesTotal; currentLoadedBytes = 0; currentTotalBytes = 0; for (var i:Number = 0; i < ids.length; i++) { currentLoadedBytes += mc_progresses[i].downloaded; currentTotalBytes += mc_progresses[i].total; } _onAllLoadProgress(currentLoadedBytes, currentTotalBytes); } public function addToQueue(_filename:String, _target_mc:MovieClip):Void { //trace(_filename+" added to queue"); _queue.push({filename:_filename, target_mc:_target_mc}); } public function loadAll():Void { if (_queue.length > 0) { howManyLoaded = 0; startLoadTime = getTimer(); for (var i:Number = 0; i < _queue.length; i++) { mcLoader.loadClip(_queue[i].filename, _queue[i].target_mc); } } else { trace("no items in queue!"); } } public function set onAllLoadComplete(func:Function):Void { _onAllLoadComplete = func; } public function set onAllLoadProgress(func:Function):Void { _onAllLoadProgress = func; } }if anyone has any suggestions for a feature or improvement, lemme know and ill add itCode:import us.youdontevenknow.myMovieClipLoader; var loader:myMovieClipLoader = new myMovieClipLoader(); loader.addToQueue("image1.png", target1_mc); loader.addToQueue("image2.png", target2_mc); loader.addToQueue("image3.png", target3_mc); loader.loadAll(); loader.onAllLoadComplete = function(loadDuration:Number):Void { trace("all loaded in "+loadDuration+"ms"); }; loader.onAllLoadProgress = function(bytesLoaded:Number, bytesTotal:Number):Void { trace("loading..."+Math.round((bytesLoaded/bytesTotal)*100)+"%"); };
ps] sorry if the code is a bit sloppy. i havent completely cleaned it up yet or optimized it. i just got it to work! feel free to use it!





Reply With Quote