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

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

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

Регистрация: Apr 2014
Сообщений: 2
Question Проблемы масштабирования изображений в XML галереи

Добрый день.
Столкнулся с проблемой, при написании XML галереи, когда вывожу изображения не могу их масштабировать, так класс Loader не имеет свойств ширины и высоты, а при попытке запихать изображение Bitmap, запихивается только последние изображение
Код AS3:
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);
			  })
	}
}
Подскажите, пожалуйста, реализовать масштабирование?

Старый 10.04.2014, 17:18
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Вы в цикле, пытаетесь загрузить одним лоадером сразу много изображений, ошибочно думая, что загрузки ставятся в очередь. Одним лоадером можно загружать только что-то одно, и только после того, как это загрузилось, загружать что-то другое. Когда контент ещё не загружен и вы выполняете команду load, то предыдущая загрузка отменяется и начитается новая. По этому только последний битпам и загружается.
Вам нужно либо правильно организовать очередь загрузок, либо создать для каждой картинки свой лоадер.

Старый 10.04.2014, 17:19
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 3  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Начнем с того, что Loader, имеет width и height читайте доки, но добавлять лоадер на сцену до окончания загрузки плохая практика, пользоваться анонимками тоже. Попробуйте переписать код, загружая картинки в отдельной функции, с локальным лоадером, и счетчиком загруженных картинок вынесенным в переменную класса

Добавлено через 1 минуту
о опоздал))

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

Регистрация: Jul 2009
Сообщений: 149
Вы обрабатываете только последнюю загрузку, вот и видите одно изображение. Анонимные функции - плохо.

Код AS3:
//......
		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++;
		}
И почему начинаете цикл с единицы? Первый индекс массива равен 0.

Старый 11.04.2014, 12:01
Ilya_kv вне форума Посмотреть профиль Отправить личное сообщение для Ilya_kv Найти все сообщения от Ilya_kv
  № 5  
Ответить с цитированием
Ilya_kv

Регистрация: Apr 2014
Сообщений: 2
Спасибо всем, разобрался.

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

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

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


 


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


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