Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 02.12.2009, 19:45
Vishapakahr вне форума Посмотреть профиль Отправить личное сообщение для Vishapakahr Найти все сообщения от Vishapakahr
  № 1  
Vishapakahr

Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
Smile вопрос связи с программированием

даже не знал как назвать тему )) вопрос состаится в следующем

у меня на сервере (скажем в локахосте) динамически обнавляются картинки,
и получаю я всю информацию от 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>
итак мне нужно загружать все эти картинки в флеш с помощью Loader() ,
и для всеx составлять прелоадери

Код AS3:
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 !!

Старый 02.12.2009, 20:00
xpymbl4 вне форума Посмотреть профиль Отправить личное сообщение для xpymbl4 Найти все сообщения от xpymbl4
  № 2  
xpymbl4
 
Аватар для xpymbl4

Регистрация: Jul 2008
Адрес: Smolensk
Сообщений: 124
Отправить сообщение для xpymbl4 с помощью ICQ Отправить сообщение для xpymbl4 с помощью Skype™
Создайте класс наследник мувиклипа, который грузит изображение, и содержит внутри прелоадер.
Вызовите колличество этих экземпляров, равное длине XML, передавая в каждый экземпляр адрес изображения.
Добавьте каждый из экземпляров на экран.
В каждом экземпляре слушайте завершение загрузки и соответственно, убирайте прелоадер в каждом экземпляре.

Добавлено через 4 минуты
Если изображения большие и хотите чтобы все загрузалось по очереди, вызывайте каждый последующий экземпляр, дождавшись загрузки предыдушейго. Хотя, думаю, именно так это само работает.
__________________
круглое тащим, квадратное катим

Старый 02.12.2009, 20:20
Vishapakahr вне форума Посмотреть профиль Отправить личное сообщение для Vishapakahr Найти все сообщения от Vishapakahr
  № 3  
Vishapakahr

Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
Цитата:
Сообщение от xpymbl4 Посмотреть сообщение
Создайте класс наследник мувиклипа, который грузит изображение, и содержит внутри прелоадер.
Вызовите колличество этих экземпляров, равное длине XML, передавая в каждый экземпляр адрес изображения.
Добавьте каждый из экземпляров на экран.
В каждом экземпляре слушайте завершение загрузки и соответственно, убирайте прелоадер в каждом экземпляре.

Добавлено через 4 минуты
Если изображения большие и хотите чтобы все загрузалось по очереди, вызывайте каждый последующий экземпляр, дождавшись загрузки предыдушейго. Хотя, думаю, именно так это само работает.
да неет , мне нужно чтобы для всех одновременно показывались прелоадеры и
все одновременно загружались .

и притом если даже нужно загружать по очереди , то опять проблема с циклами .

смотри

Код AS3:
function loaded(e:Event){
/*тут  удалять  первый  прелоадер и начать обьявлять другой  лоадер  и  функцию  loaded1()*/
function loaded1(e:Event){
/*тут  удалять  второй  прелоадер и начать обьявлять другой  лоадер  и  функцию  loaded2()*/
function loaded2(e:Event){
..... тоже  самое
.............................................
.............................................
............................................. и.т.д.
}
}
}
а такой последовательность как можно организовать с помощью циклов ?
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !!

Старый 02.12.2009, 20:38
xpymbl4 вне форума Посмотреть профиль Отправить личное сообщение для xpymbl4 Найти все сообщения от xpymbl4
  № 4  
xpymbl4
 
Аватар для xpymbl4

Регистрация: Jul 2008
Адрес: Smolensk
Сообщений: 124
Отправить сообщение для xpymbl4 с помощью ICQ Отправить сообщение для xpymbl4 с помощью Skype™
По вышенаписанной рекомендации все получится именно так как Вы хотите.
__________________
круглое тащим, квадратное катим

Старый 03.12.2009, 03:38
Hidest вне форума Посмотреть профиль Отправить личное сообщение для Hidest Найти все сообщения от Hidest
  № 5  
Hidest
 
Аватар для Hidest

Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
Используйте события, а не циклы. Картинка загрузилось, пришло событие об этом - начали загружать следующее и т.д. Это про последовательную загрузку. А так вам уже посоветовали с расширением класса MovieClip (или Sprite) - каждый из них будет грузить что надо независимо и не нужно никаких циклов для загрузки (в цикле нужно просто создавать экземпляры этих классов с передачей урла в них, складировать для удобства ссылки на них в массив и т.д.)... А вся остальная логика по загрузки и управлению прелоадером будет в них самих.

Старый 03.12.2009, 09:15
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Название темы не отражает сути вопроса.

Создать новую тему Закрытая тема Часовой пояс GMT +4, время: 18:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:38.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.