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

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

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

Регистрация: Nov 2004
Адрес: Архангельская область
Сообщений: 492
Отправить сообщение для Azo с помощью ICQ Отправить сообщение для Azo с помощью AIM Отправить сообщение для Azo с помощью Yahoo
По умолчанию Алгоритм для автоматической загрузки-паузы-остановки-возобновления загрузки Loader`a

Есть приложение у меня в котором туча картинок. и они загружаются одновременно..

как реализовать чтобы картинки грузились только те которые видны на экране, а те которые за экраном (т.е. скрол не дошел до этих картинок ... т.е. MovieClip содержащий эти картинки не поднялся вверх на достаточном уровне) стопорились и не грузились чтобы не нагружать скорость...

вот такой вариант правильный? у меня не работает он:
Цитата:
к каждой картинке добавить enterFrame и проверять если картинка в диапазоне экрана то грузим иначе stop() и unload()? потом его снова load?
__________________
-------------------------------
FLASH FLASH FLASH FLASH FLASH

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Зачем в каждой картинке?
Моё решение:
есть XML(с адресами картинок) или просто куча ссылок на картинки в массиве.
далее, считаем сколько картинок у нас должно подгрузиться. Т.е. если XML считаем детей-родителей(что у тебя там) или атрибуты с адресами и получаем массив адресов.
дале:
подгружая их по очереди одним enterFrame и по окончанию массива ремовим лстенер. т.е.:
Код AS3:
		public function AllLoader (args:String):void {
 
			// args - XML адресов которые нужно подгрузить.
 
			loadFile.load(new URLRequest(args));
			loadFile.addEventListener(Event.COMPLETE, loadCompleteXml);
			loadFile.addEventListener(IOErrorEvent.IO_ERROR, loadErrorXml);
		}
		///////////////////////////////////////////////////////////////////////////////////////
		///////////////////////////////////////////////////////////////////////////////////////
		///////////////////////////////////////////////////////////////////////////////////////
		private function loadErrorXml(e:IOErrorEvent):void { trace("Касяк с ХМЛ!!!"); }
		///////////////////////////////////////////////////////////////////////////////////////
		///////////////////////////////////////////////////////////////////////////////////////
		///////////////////////////////////////////////////////////////////////////////////////
		private function loadCompleteXml(e:Event):void {
 
			dataFile = new XML(loadFile.data);
 
                        // Вырубаем загрузку пока не загрузиться первый адрес.
 
			loadFile.removeEventListener(Event.COMPLETE, loadCompleteXml);
 
                        // парсим первый адрес и добавляем в массив.
                        // тут малость сложней так как я гружу картинки с атрибутами.
 
                        // Грузим адрес первой картинку.
			for (var i:String in dataFile.IMG.@name) {
 
				linkImage[i] = [dataFile.IMG[i].@name];
 
				var atrArr:Array = [];
 
				// Далее грузим её атрибуты.
 
				for (var j:String in dataFile.IMG[i].ARG.attributes()) {
					atrArr.push(dataFile.IMG[i].ARG.attributes()[j]);
				}
				atrImage[i] = atrArr;
			}
 
			// говорим что парсинг окончен и можно продолжать.
 
			loadSwitch = true;
			addEventListener(Event.ENTER_FRAME, onFrame);
		}
		///////////////////////////////////////////////////////////////////////////////////////
		///////////////////////////////////////////////////////////////////////////////////////
		/// Грузим картинку. ///////////////////////////////////////////////////////////////
		private function onFrame(e:Event):void {
 
			if (loadSwitch) {
 
				// Зная количество адресов начинаем грузить их по очереди.
 
				if (linkImage.length > allImage.length) {
 
					var i:int = allImage.length;
 
					loadImg.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteImg);
					loadImg.load(new URLRequest(linkImage[i]));
 
					// Запрещаем подгрузку пока не загрузиться первая картинка.
					// Потом вторая, потом .....
					loadSwitch = false;
				} else {
					// Загрузилась, отлично! Можно работать с картинками.
					ready = true;
					loadSwitch = false;
					// Вырубаем загрузку т.к. всё выполнено.
					removeEventListener(Event.ENTER_FRAME, onFrame);
				}
			}
		}
Пример ни совсем вероятно ясен. Но цель та же, пошаговая подгрузка картинок.
Надеюсь помог.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 26.03.2011, 23:58
DZHETIGAPA вне форума Посмотреть профиль Отправить личное сообщение для DZHETIGAPA Найти все сообщения от DZHETIGAPA
  № 3  
Ответить с цитированием
DZHETIGAPA
[+3 18.04.11]

Регистрация: Dec 2010
Сообщений: 342
Советую вам библиотеку загрузчика от гринсок:

http://www.greensock.com/loadermax/

Она меня много раз выручала, особенно когда куча загружаемых элементов.

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Тоже вариант! Но в моём примере можно показывать только те картинки которые уже подгрузились. А как я вижу в их работе, картинки грузятся толпой. Но в целом не плохо. Идея моего решения была в ином. Брать только те картинки которые я захочу из тех что подгрузились. Как то так.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 27.03.2011, 13:04
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 5  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Это называется пагинацией.
Грузите только те что должны быть на экране+ столько же про запас.
при скролировании - вниз - грузите следующий запас (отображая то что уже загрузилось).
Так поступают при загрузке текстур ландшафта в играх с огромными или бесшовными ландшафтами (в том же королевстве, например)
Да и вконтакт зайдите и наберите что-нить в поиске видео (типа кошки или порно) - появится список с подгрузкой. при скролле вниз список будет обновляться.

Вообще есть подход грузить частями не только картинки, но и информацию о них.
т.е. запрашивать что-то вроде:
getImageList/imagesOnPage/10/page/0
и уже по нему грузить картинки.
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 27.03.2011 в 13:17.
Старый 27.03.2011, 13:31
Azo вне форума Посмотреть профиль Отправить личное сообщение для Azo Найти все сообщения от Azo
  № 6  
Ответить с цитированием
Azo
 
Аватар для Azo

Регистрация: Nov 2004
Адрес: Архангельская область
Сообщений: 492
Отправить сообщение для Azo с помощью ICQ Отправить сообщение для Azo с помощью AIM Отправить сообщение для Azo с помощью Yahoo
Спасибо за пример, за ссылку и за теорию.
Попробую что - нибудь сотворить...

вариант с greensock как ни к стате подходит.
Потому как у меня те картинки, которые выходят за пределы экрана+запас - они удаляются.
а greensock умеет загружать по одной(или опр. кол) картинке
- в итоге не нужно париться с остановкой загруки. т.к. картинки и так по одной грузятся а неактуальные картинки удаляются с о своими листернами
__________________
-------------------------------
FLASH FLASH FLASH FLASH FLASH

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

блогер
Регистрация: Nov 2010
Сообщений: 143
Записей в блоге: 1
Цитата:
Сообщение от Котяра Посмотреть сообщение
Это называется пагинацией.
По-моемуПагинация - это обычная нумерация страниц. А то про что мы говорим называется пейджинг (paging). По крайней мере в серверсайде это всегда было так. Поправьте если во флеше другие термины.

Цитата:
Сообщение от DZHETIGAPA Посмотреть сообщение
Советую вам библиотеку загрузчика от гринсок:http://www.greensock.com/loadermax/
Она меня много раз выручала, особенно когда куча загружаемых элементов.
Есть еще BulkLoader. Что лучше?

Старый 27.03.2011, 19:22
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 8  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от surlac Посмотреть сообщение
По-моему Пагинация - это обычная нумерация страниц. А то про что мы говорим называется пейджинг (paging). По крайней мере в серверсайде это всегда было так. Поправьте если во флеше другие термины.
Пагинация как и пэйджинг - разделение на страницы.
просто пагинация от латинского слова, а пэйджинг от американского.

Можно встретить такой код:
Код AS3:
pager=new Paginator();
или
Код AS3:
$pager = new PS_Pagination($conn, $sql, 10, 5); ...
__________________
Отряд Котовскага

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

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

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


 


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


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