Показать сообщение отдельно
  #33 (permalink)  
Старый 14.01.2012, 01:56
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от 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++
			}
		}
	}
})()

Последний раз редактировалось Livaanderiamarum, 14.01.2012 в 02:00.