Показать сообщение отдельно
Старый 26.03.2011, 23:48
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 2  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Зачем в каждой картинке?
Моё решение:
есть XML(с адресами картинок) или просто куча ссылок на картинки в массиве.
далее, считаем сколько картинок у нас должно подгрузиться. Т.е. если XML считаем детей-родителей(что у тебя там) или атрибуты с адресами и получаем массив адресов.
дале:
подгружая их по очереди одним enterFrame и по окончанию массива ремовим лстенер. т.е.:
Код AS3:
		public function AllLoader (args:String):void {
 
			// args - XML адресов которые нужно подгрузить.
 
			loadFile.load(new URLRequest(args));
			loadFile.addEventListener(Event.COMPLETE, loadCompleteXml);
			loadFile.addEventListener(IOErrorEvent.IO_ERROR, loadErrorXml);
		}
		///////////////////////////////////////////////////////////////////////////////////////
		///////////////////////////////////////////////////////////////////////////////////////
		///////////////////////////////////////////////////////////////////////////////////////
		private function loadErrorXml(e:IOErrorEvent):void { trace("Касяк с ХМЛ!!!"); }
		///////////////////////////////////////////////////////////////////////////////////////
		///////////////////////////////////////////////////////////////////////////////////////
		///////////////////////////////////////////////////////////////////////////////////////
		private function loadCompleteXml(e:Event):void {
 
			dataFile = new XML(loadFile.data);
 
                        // Вырубаем загрузку пока не загрузиться первый адрес.
 
			loadFile.removeEventListener(Event.COMPLETE, loadCompleteXml);
 
                        // парсим первый адрес и добавляем в массив.
                        // тут малость сложней так как я гружу картинки с атрибутами.
 
                        // Грузим адрес первой картинку.
			for (var i:String in dataFile.IMG.@name) {
 
				linkImage[i] = [dataFile.IMG[i].@name];
 
				var atrArr:Array = [];
 
				// Далее грузим её атрибуты.
 
				for (var j:String in dataFile.IMG[i].ARG.attributes()) {
					atrArr.push(dataFile.IMG[i].ARG.attributes()[j]);
				}
				atrImage[i] = atrArr;
			}
 
			// говорим что парсинг окончен и можно продолжать.
 
			loadSwitch = true;
			addEventListener(Event.ENTER_FRAME, onFrame);
		}
		///////////////////////////////////////////////////////////////////////////////////////
		///////////////////////////////////////////////////////////////////////////////////////
		/// Грузим картинку. ///////////////////////////////////////////////////////////////
		private function onFrame(e:Event):void {
 
			if (loadSwitch) {
 
				// Зная количество адресов начинаем грузить их по очереди.
 
				if (linkImage.length > allImage.length) {
 
					var i:int = allImage.length;
 
					loadImg.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteImg);
					loadImg.load(new URLRequest(linkImage[i]));
 
					// Запрещаем подгрузку пока не загрузиться первая картинка.
					// Потом вторая, потом .....
					loadSwitch = false;
				} else {
					// Загрузилась, отлично! Можно работать с картинками.
					ready = true;
					loadSwitch = false;
					// Вырубаем загрузку т.к. всё выполнено.
					removeEventListener(Event.ENTER_FRAME, onFrame);
				}
			}
		}
Пример ни совсем вероятно ясен. Но цель та же, пошаговая подгрузка картинок.
Надеюсь помог.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!