Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Скролл огромного спрайта без лагов (http://www.flasher.ru/forum/showthread.php?t=207931)

uglan 18.05.2014 23:40

Скролл огромного спрайта без лагов
 
Привет!
Есть спрайт, в него загружаются и выставляются по порядку 4 битмапы размером 2048х1536. Итого 8к в ширину. Когда начинаю последовательно слайдить эту портянку в конце каждой "страницы"(каждая битмапа это остановка/страница) конструкция застывает на полсекунды или если по-простому ЛАГАЕТ. Вопрос к знатокам, как сделать так чтобы не лагало без потери качества и размеров картинки?

Что я пробовал:
– прятать невидимые в данный момент битмапы – лагает еще хуже.
– делать один шейп+битмапдату и с помощью copypixels и матрицы скроллить – летает без лагов, НО из-за ограничений размеров битмапдаты(несмотря на то что в доках написано что ограничения сняты) флеш дает нарисовать четко без снижения разрешения только около 4к пикселей в ширину.
– загружать сразу единую битмапу размером 8к. – также разрешение сыпется и картинка становится не ретинообразна

UPD: Забыл упомянуть, после прокрутки туда-сюда вся эта конструкция кэшируется в памяти и потом передвигается в целом без лагов. Может быть есть какой-то способ принудительного кэша чтобы не приходилось для нормальной работы крутить его(прокручивать программно до показа тоже пробовал – пока объект перекрыт другим спрайтом флеш его вообще похоже не отрисовывает, поэтому кэшируется он только видимый)

p.s. AIR 4/ios.

illuzor 18.05.2014 23:56

Цитата:

– прятать невидимые в данный момент битмапы – лагает еще хуже.
Как именно прятать? Если выключить visible, то объект не отрисовывается.

Попробуйте blitmask

uglan 19.05.2014 00:08

прятать через visible да, при этом заботливый флеш выгружает спрятанный объект из памяти из-за чего его повторное отображение требует еще больше времени чем если бы он просто висел где-то неподалеку.

Пример с блитмаск если без битмапмоде даже на компе тормозит, что уж говорить про иос. К тому же скорее всего он использует ту же битмапдату а значит ограничения на размер будут налагаться такие же.

illuzor 19.05.2014 00:39

Цитата:

2048х1536. Итого 8к в ширину
Цитата:

В AIR 1.5 и Flash Player 10 максимальный размер объекта BitmapData составляет 8,191
У вас получается 8192, то есть на один пиксель больше ограничения.
Но:
Цитата:

Начиная с версии AIR 3 и проигрывателя Flash Player 11 ограничения по размеру для объекта BitmapData удалены.
Максимальный размер растрового изображения теперь зависит от операционной системы.
Я не смог найти подробной информации.
Попробуйте уменьшить картинки на пару пикселей и склеить в одну. Возможно, заработает.
Работаете с дисплейлистом без GPU фреймворков?

uglan 19.05.2014 00:46

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

Про дисплейлисты без GPU фреймворков не понял. Рендерю в GPU, но стандартными средствами, без движков. А как дисплейлист может помочь?

in4core 19.05.2014 00:51

Цитата:

снижения разрешения только около 4к пикселей в ширину.
Ммм. А что много людей с мониторами 4к в ширину хотя бы? Тем более ios

uglan 19.05.2014 00:56

разрешение ipad 3+ = 2048x1536. 4 экрана в ширину – вот и 8к пикселей уже.

in4core 19.05.2014 03:37

Цитата:

разрешение ipad 3+ = 2048x1536
Да лан? Что то не верится, когда у моего LED 23 1920*1080, а у айпада в 2 раза меньшего еще и больше :) Там точек стока не уместиться ))) Профессиональный юмор...Но не суть. Дело в том, что - причем тут 4 экрана ? Экран то один. Или вы собрались каким то образом объединить 4 айпада на показ одного результата ? :)

ZackMercury 19.05.2014 03:42

Цитата:

Сообщение от in4core (Сообщение 1166114)
Да лан? Что то не верится, когда у моего LED 23 1920*1080, а у айпада в 2 раза меньшего еще и больше :) Там точек стока не уместиться ))) Профессиональный юмор...Но не суть. Дело в том, что - причем тут 4 экрана ? Экран то один. Или вы собрались каким то образом объединить 4 айпада на показ одного результата ? :)

Мне кажется, он имел в виду показ определённой части спрайта размером в экран.

Aquahawk 19.05.2014 08:32

Цитата:

огромного
Цитата:

без лагов
извините, придётся ограничиться разумным.


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

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