PDA

Просмотр полной версии : как загурзить картинтки если их несколько?


viktorami
05.06.2012, 16:01
загружаю из внешней директории картинки у которых известны id
есть массив id из него формируется путь и в цикле они загружаются.
Но на каждую картинку ведь надо бы событие
Event.COMPLETE
и поэтому цикл - объявляя все новые картинка по циклу естественно переобъявляет это событие в общим ни одна картинка не успевает загрузится как делат в таких случаях? когда надо скажем загрузить nn-ое количество картинок?

Aquahawk
05.06.2012, 16:12
создавать много лоадеров и грузить всеми сразу, или загружать последовательно, т.е. в комплите одной грузить следующую, или сделать пул из пары десятков лоадеров которые по очереди будут грузить картинки, или воспользоваться готовыми пулами, только я таких не знаю т.к. не использую, но они есть

Hauts
05.06.2012, 16:12
Создайте переменную-счетчик для подсчета кол-ва загруженных картинок.

54321go
05.06.2012, 16:12
http://www.greensock.com/loadermax/ вот удобный класс для работы с загрузкой

viktorami
05.06.2012, 16:26
секунду. при чем тут число. пробелма в том что в каждой интерации цикла объявляется один и тот же слушатель. можно как то это обойти. у меня это выглядит так:
for(i=0;i<=arr.length-1;i++)
{
vReq.url = "http://serv3//fotos//buu1"+arr[i]+".JPG"+ "?" + Math.random() ;
trace(vReq.url);
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoadReady);

imageLoader.load(vReq);
}
и когда картинка загружатся начинает цикл то продолжается и видимо сбивает процесс.

Добавлено через 1 минуту
Aquahawk
я не знаю заранее их количество. это должно быть циклически поставлено на поток.

Добавлено через 1 минуту
вроде где то видел что можно загружать из внешнего файла картинки не дожидаясь СОБЫТИЕМ их загрузки. это так?

morgenshtern
05.06.2012, 16:31
так создайте массив лоадеров, либо на каждую картинку, либо, как выше написали, пул лоадеров.

viktorami
05.06.2012, 16:43
спасибо. пошло. кстати кто нибудь знает - поддерживают ли картинки(как объект) события?
смогут ли отследить щелчек или лучше оформить их как movie clip?

morgenshtern
05.06.2012, 16:49
картинка у вас где в итоге лежит? Спрайт или мувик скорее всего. Вот ему и вешайте листенер.

viktorami
05.06.2012, 16:53
var image2:Bitmap = new Bitmap(e.target.content.bitmapData);
к этому объекту можно добавить?

Aquahawk
05.06.2012, 17:05
нет нельзя
прочитайте уже хелп перед использованием любого класса. Битмап не интерактивен!

morgenshtern
05.06.2012, 17:18
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/display/Bitmap.html

вы уверены что не хотите обратиться в раздел "вакансии"?

viktorami
05.06.2012, 17:26
а тогда вот я щелкнул - есть какие нибудь средства узнать характеристики объекта по которому щелкнул?
а еще лучше передать в процедуру его экземпляр -как нибудь так...

udaaff
05.06.2012, 17:30
event.target, event.currentTarget в помощь.

Aquahawk
05.06.2012, 17:30
ещё раз настоятельно рекомендую читать доку. У ивента есть свойства target и currentTarget, в target будет лежать тот на кого щёлкнули. Вы паталогически боитесь доки ли что?

viktorami
05.06.2012, 17:34
а нет. уточню - не щелкнул а когда картинка загрузилась - можно узнать ее характеристики? к примеру путь к файлу или что то в этом роде? а то если они будут грузится в цикле - как внутри EVENT.Complete отличить одну картинку от другой?

Добавлено через 38 секунд
Aquahawk прощу прощения- уточнил. в доку надо лезть когда знаешь что ищешь. то есть сам алгоритм.

morgenshtern
05.06.2012, 17:48
в ваше случае не будет понимания алгоритмов пока не откроете для себя доку.

Aquahawk
05.06.2012, 17:48
в доку надо лезть как только вам пришла идея воспользоваться каким-то классом. Использовать класс и не знать что он делает неправильно.

viktorami
05.06.2012, 18:07
почитал док - вопрос остался вот сработало событие eventcomplete как ВНУТРИ события узнать для какой именно картинки оно сработало?
ведь картинки загружаются в цикле. хорошо бы знать в каждом новом событии окончания загрузки- о какой картинке речь. флаг не годится. не факт что он не перезапишется до новой интерации цикла.

Добавлено через 16 минут
разобрался. оказывается можно добавить напрямую лоадер из массива лоадеров
a[i].load(vReq);
addChild(a[i]);