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

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

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

Регистрация: Dec 2011
Сообщений: 15
По умолчанию Загрузка картинок в Vector

Доброго времени суток.
Есть текстовый документ, например, "Трололо |img+1.png+500+400| " и функция, которая разбивает разбивает эту строку на массив, определяет, где текст, а где будет картинка(и), грузит картинку(и) и добавляет все в groupVector.
Нужно, что бы нормально работали imgloader.width & imgloader.height.
Для этого, как я понял, нужно добавить слушатель:
Код AS3:
imgloader.addEventListener(Event.COMPLITE, trololo)
Но как реализовать это так, что бы сохранить очередность добавления элементов в groupVector?

Функция выглядит так:
Код AS3:
elements = str.split("|");
for (var j:uint = 0; j < elements.length; j++) {
	var n:uint = Math.round(j / 2 - Math.floor(j / 2));
	if (n == 0 && elements[j] != "") {
		var textElement:TextElement = new TextElement(elements[j], ef);
		groupVector.push(textElement);
	}
 
	if (n == 1) {
	str = elements[j];
	imagein = str.split("+");
	var imgloader:Loader = new Loader();
	var request:URLRequest = new URLRequest("media/" + imagein[1]);
 
	if (imagein[0] == "img") {
		imgloader.load(request, null);
	} else if (imagein[0] == "swf") {
		var appDomain:ApplicationDomain = new ApplicationDomain();
		var context:LoaderContext = new LoaderContext(false, appDomain);
		imgloader.load(request, context);
	}
 
	var obj:Sprite = new Sprite();
	var swidth:Number = imagein[2];
	var sheight:Number = imagein[3];;
 
	obj.addChild(imgloader);
	imgloader.x = margin / 2;
	imgloader.y = margin / 2;
	obj.graphics.lineStyle(1, 0x000000, 1);	
        obj.graphics.beginFill(0xFFFFFF, 0);
	obj.graphics.drawRect(0, 0, swidth + margin, sheight + margin);
	obj.graphics.endFill();
 
	var graphicElement:GraphicElement = new GraphicElement(obj, obj.width, obj.height, ef);
	groupVector.push(graphicElement);
 }

Старый 15.01.2012, 14:40
Stitch512 вне форума Посмотреть профиль Отправить личное сообщение для Stitch512 Найти все сообщения от Stitch512
  № 2  
Ответить с цитированием
Stitch512

Регистрация: Nov 2010
Сообщений: 150
Немного не понял вопрос. Если про порядок загрузки, то она во флеше распараллелена, т.е. очередность не гарантируется. А если про порядок расположения в groupVector, то они в примере и так расположены последовательно.

Старый 15.01.2012, 14:53
jeanosis вне форума Посмотреть профиль Отправить личное сообщение для jeanosis Найти все сообщения от jeanosis
  № 3  
Ответить с цитированием
jeanosis

Регистрация: Dec 2011
Сообщений: 15
В примере да. Но мне необходимо что бы использовались loader.width & loader.height.
И при этом сохранить порядок расположения.

Старый 15.01.2012, 19:53
Stitch512 вне форума Посмотреть профиль Отправить личное сообщение для Stitch512 Найти все сообщения от Stitch512
  № 4  
Ответить с цитированием
Stitch512

Регистрация: Nov 2010
Сообщений: 150
Тогда, как вариант, в первом цикле сохранить лоадеры в промежуточный массив, а добавление GraphicElement производить по событию COMPLETE. Соответсвенно интекс лоадера в массиве будет соответсвовать индексу в groupVector.

Старый 15.01.2012, 20:45
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 5  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Грузите 1 ЛОАДРОМ!
__________________
Марк Tween

Старый 15.01.2012, 22:38
Stitch512 вне форума Посмотреть профиль Отправить личное сообщение для Stitch512 Найти все сообщения от Stitch512
  № 6  
Ответить с цитированием
Stitch512

Регистрация: Nov 2010
Сообщений: 150
Цитата:
Грузите 1 ЛОАДРОМ!
А поподробнее...

Старый 16.01.2012, 01:23
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 7  
Ответить с цитированием
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
Цитата:
Сообщение от Stitch512 Посмотреть сообщение
А поподробнее...
Если я правильно понял, то in4core имел ввиду не паралельную загрузку всех ресурсов несколькими Лоадерами, а загрузку ПОСЛЕДОВАТЕЛЬНУЮ!

Так конечно будет немного сложнее, потому, что прийдется загружать текущую картинку, дожидаться окончания ее загрузки, вытаскивать картинку из Лоадер.контент и переходить к загрузке следующей картинки. Продолжать, пока весь список не окажется загруженым.

По завершению этой бубно-ламбады у Вас будут сохранены все картинки (если Вы их вытягивали из Лоадер.контент и запоминали ссылку на них, скажем в массив, вектор или объект). Следовательно можна начинать запихивать у Ваш Обдж:Спрайт, посредством эдЧайлд()

Старый 16.01.2012, 01:29
Stitch512 вне форума Посмотреть профиль Отправить личное сообщение для Stitch512 Найти все сообщения от Stitch512
  № 8  
Ответить с цитированием
Stitch512

Регистрация: Nov 2010
Сообщений: 150
Цитата:
Если я правильно понял, то in4core имел ввиду не паралельную загрузку всех ресурсов несколькими Лоадерами, а загрузку ПОСЛЕДОВАТЕЛЬНУЮ!
На сколько я понял, нужно обспечить порядок картинок в массиве groupVector, а не порядок загрузки (по крайней мере вразумительных причин для последовательной загрузки не вижу, кроме увеличения общего времени). И при таком потходе, если одна картинка не загрузилась (всякое бывает...) то не загрузятся и остальные, может так и должно быть, но как минимум нужно добавить обработку ошибок.

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

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

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


 


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


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