|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2014
Сообщений: 2
|
Проблемы масштабирования изображений в XML галереи
Добрый день.
Столкнулся с проблемой, при написании XML галереи, когда вывожу изображения не могу их масштабировать, так класс Loader не имеет свойств ширины и высоты, а при попытке запихать изображение Bitmap, запихивается только последние изображение var xml_l:URLLoader = new URLLoader(); var photos:XML = new XML(); var itemlength:uint; var ph_l:Loader = new Loader(); xml_l.load(new URLRequest("2.fvrk")); xml_l.addEventListener(Event.COMPLETE,onComplete); function onComplete(event:Event) { photos = XML(xml_l.data); itemlength = photos.photo.length(); xml_l = null; var i:int=1 for(i=1;i<itemlength;i++){ var img_url = photos.photo[i].url; ph_l.load(new URLRequest(img_url)); ph_l.contentLoaderInfo.addEventListener(Event.COMPLETE,function(e:Event){ var img:Bitmap = e.target.content as Bitmap; img.width=200; img.x=50*i; addChild(img); }) } } |
|
|||||
Вы в цикле, пытаетесь загрузить одним лоадером сразу много изображений, ошибочно думая, что загрузки ставятся в очередь. Одним лоадером можно загружать только что-то одно, и только после того, как это загрузилось, загружать что-то другое. Когда контент ещё не загружен и вы выполняете команду load, то предыдущая загрузка отменяется и начитается новая. По этому только последний битпам и загружается.
Вам нужно либо правильно организовать очередь загрузок, либо создать для каждой картинки свой лоадер. |
|
|||||
Начнем с того, что Loader, имеет width и height читайте доки, но добавлять лоадер на сцену до окончания загрузки плохая практика, пользоваться анонимками тоже. Попробуйте переписать код, загружая картинки в отдельной функции, с локальным лоадером, и счетчиком загруженных картинок вынесенным в переменную класса
Добавлено через 1 минуту о опоздал)) |
|
|||||
Регистрация: Jul 2009
Сообщений: 149
|
Вы обрабатываете только последнюю загрузку, вот и видите одно изображение. Анонимные функции - плохо.
//...... private var _loadedImagesNum:int = 0; private const _RESULT_IMG_WIDTH:Number = 100; private function onComplete(event:Event):void { for (var i:int = 0; i < itemlength; i++) { var imgLoader:Loader = new Loader(); var request:URLRequest = new URLRequest(_imagesList[i]); imgLoader.load(request); imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoadedHandler); } } private function imgLoadedHandler(e:Event):void { var img:Bitmap = e.target.content as Bitmap; img.scaleX = img.scaleY = _RESULT_IMG_WIDTH / img.width; img.x = (img.width + 10) * _loadedImagesNum; addChild(img); _loadedImagesNum++; } |
|
|||||
Регистрация: Apr 2014
Сообщений: 2
|
Спасибо всем, разобрался.
|
Часовой пояс GMT +4, время: 23:20. |
|
« Предыдущая тема | Следующая тема » |
|
|