Торможение интерфейса Loader/BitmapData.draw
Всем привет!
Что делается: грузится в цикле набор больших картинок(2500px+) для галереи, с асинхронной загрузкой(loaderContext.imageDecodingPolicy = ImageDecodingPolicy.ON_LOAD;) то есть вроде все как надо. Затем из этих больших картинок на лету создаются мелкие превьюшки раза в 3-4 меньше оригинала и сохраняются в памяти как BitmapData Проблем: Картинки действительно грузятся уже после появления контейнеров на экране, но во время загрузки все равно наблюдается "заморозка" интерфейса, или попросту говоря "лаги". Вопрос в том действительно ли это проблема загрузчика и асинхронная загрузка не справляется с задачей или тормоза появляются на этапе создания превью? И если второе то как понизить приоритет функции создания BitmapData и BitmapData.draw() чтобы избежать торможения интерфейса? Спасибо! |
Не проще ли привьюшки отдельными картинками хранить, а не отрисовывать с больших в рантайме?
|
А как они создаются-то? Вряд ли асинхронная загрузка тому причина. Скорее синхронная операция вида draw или еще чего-то.
|
Смотрите, "асинхронная" операция загрузки на самом деле состоит из 2 частей:
1) загрузка (ждем пока к нам по сети придут все байты от сервера) 2) преобразование (мы берем байты и делаем из них уже пиксели, если так можно сказать) Операция 2 - синхронная. То есть начали, и пока не закончили ресурсы системе не возвращаем. Очевидно, что для больших картинок (а Ваши картинки можно назвать большими) вторая операция может сильно сказываться на производительности. |
Цитата:
Цитата:
Код AS3:
|
а почему не так:
Код AS3:
|
Действительно... Но тем не менее остается еще одна синхронная операция по уменьшению оригинала. Я уж думал не использовать ли мне atf энкодер и atf формат вместо png. Из atf вроде можно мипмэп получить что уже само по себе является уменьшенной копией. Только он вроде только кратные размеры поддерживает.
|
|
Цитата:
http://support.kurchenko.ru/test_shaderJob.html битмапдата из библиотеки, 4000+ пикселей. Флаг асинхронности в моем случае установлен в false(впрочем разницы никакой), AIR3.2. Код AS3:
|
Часовой пояс GMT +4, время: 00:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.