Сообщение от melky
|
есть примеры того, когда нужно выполнять функцию, если она передана?
|
/**
* Xранилище картинок, принимает 2 параметра, либо имя картинки, тогда возвращает картинку
* @param {Object} imagesHash ассоциативный массив в стиле {'имяКартинки', 'url'}
* @param {Function} call функция которая вызовется по завершению загрузки ВСЕХ картинок.
* @memberOf images
*/
image = (function() {
// контейнер с картинками
var imagesContainer = {},
// счетчик загруженных картинок
counter = 0,
// требуется загрузить картинок
length = 0,
// калбак
callback;
/**
* @module images
*/
return function(imagesHash, call) {
// если аргумент один вернуть картинку
if (arguments.length == 1)
return imagesContainer[imagesHash];
// если аргумента 2, то добавить картинки
if (arguments.length == 2) {
// зафиксировать калбак
callback = call
for (i in imagesHash) {
var img = new Image()
img.src = imagesHash[i]
// при загрузке картинки
img.onload = function() {
// прибавить счетчик
counter++
// если загружены все картинки вызвать калбак
if (counter === length) {
return callback && callback() //вот то место!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
}
// засунуть картинку в контейнер
imagesContainer[i] = img
// прибавить длину картинок которых требуется загрузить
length++
}
}
}
})()