Created
April 25, 2011 20:59
-
-
Save BenJam/941210 to your computer and use it in GitHub Desktop.
Beautifully simple image preloader, sequenced and namespaced
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
preloadImages = { | |
count: 0 /* keep track of the number of images */ | |
,loaded: 0 /* keeps track of how many images have loaded */ | |
,onComplete: function(){} /* fires when all images have finished loadng */ | |
,onLoaded: function(){} /*fires when an image finishes loading*/ | |
,loaded_image: "" /*access what has just been loaded*/ | |
,images: [] /*keeps an array of images that are loaded*/ | |
,incoming:[] /*this is for the process queue.*/ | |
/* this will pass the list of images to the loader*/ | |
,queue_images: function(images) | |
{ | |
//make sure to reset the counters | |
this.loaded = 0; | |
//reset the images array also | |
this.images = []; | |
//record the number of images | |
this.count = images.length; | |
//store the image names | |
this.incoming = images; | |
//start processing the images one by one | |
this.process_queue(); | |
} | |
,process_queue: function() | |
{ | |
//pull the next image off the top and load it | |
this.load_image(this.incoming.shift()); | |
} | |
/* this will load the images through the browser */ | |
,load_image: function(image) | |
{ | |
var this_ref = this; | |
var preload_image = new Image; | |
preload_image.onload = function() | |
{ | |
//store the loaded image so we can access the new info | |
this_ref.loaded_image = preload_image; | |
//push images onto the stack | |
this_ref.images.push(preload_image); | |
//note that the image loaded | |
this_ref.loaded +=1; | |
//fire the onloaded | |
(this_ref.onLoaded)(); | |
//if all images have been loaded launch the call back | |
if(this_ref.count == this_ref.loaded) | |
{ | |
(this_ref.onComplete)(); | |
} | |
//load the next image | |
else | |
{ | |
this_ref.process_queue(); | |
} | |
} | |
preload_image.src = image; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment