![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
|
даже не знал как назвать тему )) вопрос состаится в следующем
у меня на сервере (скажем в локахосте) динамически обнавляются картинки, и получаю я всю информацию от XML . XML у меня скаже такова вида <images> <img src="test/images/pic1" width="100" height="100"/> <img src="test/images/pic2" width="100" height="100"/> <img src="test/images/pic3" width="100" height="100"/> <img src="test/images/pic4" width="100" height="100"/> <img src="test/images/pic5" width="100" height="100"/> </images> и для всеx составлять прелоадери var host="http://localhost/"; var xmlloader:URLLoader=new URLLoader(new URLRequest(host+"slideshow.xml?p="+Math.random())); xmlloader.addEventListener(Event.COMPLETE,done); function done(e:Event){ var imgn=0; //попробуем считать количество картинок в XML е var xmldata:XML=new XML(e.target.data); var pics:Array=new Array(); var percents:Array=new Array(); while(xmldata.img[imgn]!=undefined){ pics[imgn]=new Loader(); pics[imgn].contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loading); pics[imgn].contentLoaderInfo.addEventListener(Event.COMPLETE,loaded); pics[imgn].load(new URLRequest(host+xmldata.img[imgn].@src)); percents[imgn]=new TextField(); if(imgn%5==0){ pics[imgn].x=0; pics[imgn].y=0; percents[imgn].x=pics[imgn].x; percents[imgn].y=pics[imgn].y; }else{ pics[imgn].x=pics[imgn-1].x+Number(xmldata.img[imgn-1].@width); pics[imgn].y=100*(imgn-imgn%5)/5; percents[imgn].x=pics[imgn].x; percents[imgn].y=pics[imgn].y; } percents[imgn].text=""; addChild(percents[imgn]); /********вот здесь будьте внимательнее , потомучто у меня проблема именна на этом месте , если я буду использовать функции loading и loaded то в цикле while он сработывать не будет , потомучто цикл наверно выполняется очень быстро а для загрузки картинок должно уйти некоторое время . ***************/ function loading(e:ProgressEvent){ percents[imgn].text=100*(e.bytesLoaded/e.bytesTotal)+"%"; } function loaded(e:Event){ removeChild(percents[imgn]); addChild(pics[imgn]); } imgn++; } } я могу решать эту задачу , но даже при огромном количестве это тоже не оптимально ! и так как можно решать эту задачу с помощьу циклов ?? ![]()
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !! |
|
|||||
|
Создайте класс наследник мувиклипа, который грузит изображение, и содержит внутри прелоадер.
Вызовите колличество этих экземпляров, равное длине XML, передавая в каждый экземпляр адрес изображения. Добавьте каждый из экземпляров на экран. В каждом экземпляре слушайте завершение загрузки и соответственно, убирайте прелоадер в каждом экземпляре. Добавлено через 4 минуты Если изображения большие и хотите чтобы все загрузалось по очереди, вызывайте каждый последующий экземпляр, дождавшись загрузки предыдушейго. Хотя, думаю, именно так это само работает.
__________________
круглое тащим, квадратное катим |
|
|||||
|
Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
|
Цитата:
все одновременно загружались . и притом если даже нужно загружать по очереди , то опять проблема с циклами . смотри function loaded(e:Event){ /*тут удалять первый прелоадер и начать обьявлять другой лоадер и функцию loaded1()*/ function loaded1(e:Event){ /*тут удалять второй прелоадер и начать обьявлять другой лоадер и функцию loaded2()*/ function loaded2(e:Event){ ..... тоже самое ............................................. ............................................. ............................................. и.т.д. } } }
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !! |
|
|||||
|
По вышенаписанной рекомендации все получится именно так как Вы хотите.
__________________
круглое тащим, квадратное катим |
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Используйте события, а не циклы. Картинка загрузилось, пришло событие об этом - начали загружать следующее и т.д. Это про последовательную загрузку. А так вам уже посоветовали с расширением класса MovieClip (или Sprite) - каждый из них будет грузить что надо независимо и не нужно никаких циклов для загрузки (в цикле нужно просто создавать экземпляры этих классов с передачей урла в них, складировать для удобства ссылки на них в массив и т.д.)... А вся остальная логика по загрузки и управлению прелоадером будет в них самих.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Название темы не отражает сути вопроса.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:38. |
|
|
« Предыдущая тема | Следующая тема » |
|
|