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

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

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

Регистрация: Jan 2012
Сообщений: 836
По умолчанию Отследить загрузку нескольких объектов

Всем привет. Всю голову уже сломал и так делал, и так, не получается что-то. В общем в цикле прогружаю определенные картинки
Код AS3:
for (i = 0; i < item_len; i++)
				{
 
					slot = new Loader();
					slotURLReq = new URLRequest('какой-то урлшник с картинкой');
					slot.contentLoaderInfo.addEventListener(Event.COMPLETE, slot_complete);
					slot.load(slotURLReq);
				}
 
	private function slot_complete(e:Event):void
		{
		       slot.contentLoaderInfo.removeEventListener(Event.COMPLETE, slot_complete);
                               object_arr.push(slot);
				j++;
				if (j == item_len)
				{
					j = 0;
					for (var k:int = 0; k < object_arr.length; k++)
					{
						object_arr[k].x = 350 + k * 60;
						object_arr[k].y = 365;
						addChild(object_arr[k]);
					}
					object_arr.splice(0);
}
Это последняя бредовая идея, которая тоже нефига не работает). Получается так, что последний созданный объект ложится поверх предыдущего, игнорируя координаты, то есть объект должен быть чуть правее от предыдущего. Собственно, вопрос, как же все таки мне отследить, что все объекты были загружены? Я попытался это сделать таким образом, но это не работает. Нужно убедиться, что все объекты были 100% подгружены и с ними можно было работать в дальнейшем.

Старый 19.06.2015, 21:47
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Загрузить одну картинку, взять её битмапдату и работать с непосредственно с ней не подходит? Или url меняется в цикле?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
В идеале код ужасен, очень ужасен, прямо ваще жесть.
Но я не буду ничего править, просто чтобы заработало может так?

Код AS3:
for (i = 0; i < item_len; i++)
				{
 
					slot = new Loader();
					slotURLReq = new URLRequest('какой-то урлшник с картинкой');
					slot.contentLoaderInfo.addEventListener(Event.COMPLETE, slot_complete);
					slot.load(slotURLReq);
				}
 
	private function slot_complete(e:Event):void
		{
		       (e.currentTarget as Loader).contentLoaderInfo.removeEventListener(Event.COMPLETE, slot_complete);
                               object_arr.push(e.currentTarget as Loader);
				j++;
				if (j == item_len)
				{
					j = 0;
					for (var k:int = 0; k < object_arr.length; k++)
					{
						object_arr[k].x = 350 + k * 60;
						object_arr[k].y = 365;
						addChild(object_arr[k]);
					}
					object_arr.splice(0);
}
__________________
There is no thing in this world that is not simple.

Старый 19.06.2015, 22:10
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 4  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
udaaffда, url меняется в цикле, в этом и запара.
ZackMercury
не, так ваще не работает никак.
Цитата:
В идеале код ужасен, очень ужасен, прямо ваще жесть.
Да это понятное дело))Но я фиг знаю как по циклу это дело отследить еще. Однозначно нужно убеждаться, что данный объект был загружен и соответственно если их несколько, значит и учитывать надо несколько. Я попытался так сделать, но вышло криво и тупо) Все работает на ура если не отслеживать загрузку объекта
Код AS3:
slot = new Loader();
					slotURLReq = new URLRequest('какой-то урлшник с картинкой');
					slot.load(slotURLReq);
slot.x = 350 + i*60;
slot.y = 365;
addChild(slot);
НО, этот вариант меня не устраивает совсем, одна из причин - это качество картинки идет к чертям, а мне надо все эти картинки по битмапам раскидать, но чтобы закинуть их в битмап, сначала нужно отследить их загрузку. Чтобы потом расставить их грамотно, нужно отследить загрузку всех объектов)

Старый 19.06.2015, 22:25
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 5  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
не, так ваще не работает никак.
Должно работать, если нет, то я даже не знаю, как понимать вашу логику.
Ааа, секунду, неее, точно, currentTarget... Это contentLoaderInfo. Я подзабыл немного.
В таком случае вот так:
Код AS3:
for (i = 0; i < item_len; i++)
				{
 
					slot = new Loader();
					slotURLReq = new URLRequest('какой-то урлшник с картинкой');
					slot.contentLoaderInfo.addEventListener(Event.COMPLETE, slot_complete);
					slot.load(slotURLReq);
                                       object_arr.push(slot);
				}
 
	private function slot_complete(e:Event):void
		{
		       e.currentTarget.removeEventListener(Event.COMPLETE, slot_complete);
				j++;
				if (j == item_len)
				{
					j = 0;
					for (var k:int = 0; k < object_arr.length; k++)
					{
						object_arr[k].x = 350 + k * 60;
						object_arr[k].y = 365;
						addChild(object_arr[k]);
					}
					object_arr.splice(0);
}
Вот только object_arr.splice(0) может всё вам испортить.
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jan 2012
Сообщений: 836
Спасибо) Вот так работает. Правда код все равно стремный, надо бы его как то переделать пограмотнее чтоль

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Godwarlock, рекомендую не писать с бодуна код за 3 секунды, а хоть немного думать о красивой структуре.
Упор не в скорость а в красоту(элегантность), читаемость и порядок.
__________________
There is no thing in this world that is not simple.

Старый 20.06.2015, 00:21
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 8  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Godwarlock, рекомендую не писать с бодуна код за 3 секунды, а хоть немного думать о красивой структуре.
Упор не в скорость а в красоту(элегантность), читаемость и порядок.
Именно раздумье и его непродуктивность привело меня к такому варианту)
p.s
Я еще конечно подумаю над вариантами. В прочем есть один на уме, сейчас попытаюсь его грамотно реализовать

Добавлено через 20 минут
Код AS3:
private function add_slot():void 
			{
				slot = new Loader();
				slotURLReq = new URLRequest(MW.host_name + json_obj.error[i].url);
				slot.contentLoaderInfo.addEventListener(Event.COMPLETE, slot_complete);
				slot.load(slotURLReq);
			}
private function slot_complete(e:Event):void
		{
			slot.removeEventListener(Event.COMPLETE, slot_complete);
			i++;
			bmp = slot.content as Bitmap;
			bmp.smoothing = true;
			bmp.x = 350 + i * 60;
			bmp.y = 365;
			slot_sprite.addChild(bmp);
			if (i < item_len)
			{
				add_slot();
			}else
			{
				//Типо закончили скрипт
			}
		}
Сделал так, вроде как лучше и тем самым избавился от циклов


Последний раз редактировалось Godwarlock; 20.06.2015 в 00:41.
Старый 20.06.2015, 00:54
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 9  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Есть же готовые булклоадеры и прочее. Смысл в последовательной загрузке?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 20.06.2015, 00:58
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 10  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Цитата:
Сообщение от GBee Посмотреть сообщение
Есть же готовые булклоадеры и прочее. Смысл в последовательной загрузке?
Откуда мне знать простому смертному о каких-то там "булклоадерах"?))

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

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

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


 


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


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