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

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
По умолчанию [Feathers] Загрузка графики в List

Есть два основных способа отображения большого количества графики в компоненте List: грузить все сразу Asset Manager`ом и потом добавлять DO как iconFunction:

Код AS3:
myList.itemRendererProperties.iconFunction = function( item:Object ):DisplayObject {
				var img:Image = new Image(item.name);
				return img;
			})

либо посредством ImageLoader (пример галереи на сайте Feathers).

Графика хранится в sprite seets и её очень много, порядка 500 картинок по 512х512. Если использовать первый способ, то минусы такие:
1. При запуске приложения ждем 10-20 сек. пока загрузятся все ассеты.
2. Все это хранится в оперативе и нет возможности выгрузить. Соответственно, отжирается огромное кол-во памяти, что приводит к глюкам другого функционала приложения.

Плюсы: 1. Все отображается мгновенно и нет лагов при скролинге.

Если юзать второй способ, то память свободна, но есть небольшие лаги при подгрузке изображений. Но самый большой минус и я не знаю как от него избавиться - как грузить ATF спрайтшитсами с помощью ImageLoader?
__________________
In Code We Trust

Старый 05.06.2013, 22:03
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 2  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Загрзука текстуры обычно вызывает небольшой лаг(создание массива байтов, чтение из него, загрузка в видеопамять). Кроме того, у некоторых(а с мобильным интернетом - у большинства) клиентов будет давать о себе знать лаг подгрузки изображения с удаленного сервера(если они не хранятся локально). Можно попробовать асинхронную загрузку ATF, но в тестах не заметил особого улучшения ситуации. Есть еще вариант со стриммингом, но он вряд ли будет корректно работать с атласами, качество у мипмап для GUI не годится(эта технология в первую очередь ориентирована на 3D, для организации LoD-рендера), да и предупреждают о росте объемов используемой памяти.
Хранить множество картинок в оперативной памяти можно, если это, например, демонстрационное приложение для стендов с тачскринами - там обычно наиболее важным параметром является презентабельный вид, а производительности вполне хватит. По поводу ImageLoader: вот в этом форке есть реализация работы с ATF, но лучше написать свой загрузчик. Там обычный URLLoader, бонусом будет более точный котроль за ресурсами(кэширование соседних картинок, предварительная загрузка следующих, пока юзер смотрит на текущий набор изображений). На месте картинок можно показывать некие стандартные фоны(например, стилизированный мужской/женский силуэт для аватарок) с индикатором прогресса, если его красиво вписать в дизайн приложения - юзера раздражать не будет. Да, загрузка атласов ничем не отличается от загрузки обычной текстуры, только нужно будет предварительно загрузить XML-описание атласа, можно тем же экземпляром URLLoader.

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Спасибо, C4Grey, за дельный совет.
Мне посоветовали как вариант создавать перезаписываемый отдельный инстанс AssetManager`а. Который будет постоянно обновляться только выбранными данными. Лаг однозначно будет, но нужно тестировать где больше: с ImageLoader или мини-AssetManager`ом.

И спасибо за ваши либы и статьи в блоге. Помогают
__________________
In Code We Trust

Старый 06.06.2013, 08:05
qweX вне форума Посмотреть профиль Отправить личное сообщение для qweX Посетить домашнюю страницу qweX Найти все сообщения от qweX
  № 4  
Ответить с цитированием
qweX

Регистрация: Feb 2003
Адрес: gplus.to/qweX
Сообщений: 43
Отправить сообщение для qweX с помощью ICQ
На этот счет можно попробовать использовать Workers для загрузки и обработки ассетов, а после передавать полученные картинки главному приложению в формате AMF.
Как показано в этом примере http://gotoandlearn.com/play.php?id=162 приложение работает в несколько потоков и обработка процессов не влияет на анимацию. По факту, Worker создает еще одну среду FlashPlayer'а и работает отдельно, соответственно увеличится объем потребляемой памяти на лишние 5Мб

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

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

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


 


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


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