|
|
|||||
Регистрация: Aug 2012
Сообщений: 23
|
Вопрос по "длинным массивам"
Доброе время суток.
Ситуация следующая: Создаю вектор из 100000 графических элементов, при этом не добавляю эти элементы на сцену. Памяти на это ушло порядка 300Mb. Операций ни каких с этим вектором не провожу, но fps падает в два раза. Что за дела?) Кто-нибудь может прояснить причину падения fps? Понятно что мне не нужно столько элементов), вопрос скорее теоретически-гипотетический) Спасибо. |
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Enemy01 - часом не мувики, в которых крутится анимация? Что там внутри?
|
|
|||||
Регистрация: Aug 2012
Сообщений: 23
|
Сеперкласс Sprite, внутри действительно есть несколько MovieClip, но анимации там нет. Пробовал создать вектор из 1000000 Sprite без отрисованной графики в конструкторе, заняло 800mb. Тормозов нет.
вот то что в конструкторе |
|
|||||
свойство .visible = false не освобождает процессор от отрисовки объектов, внутри программы они все еще продолжают жить и работать, со всеми вытекающими в виде падения fps.
Обычно делают функции initialize() и dispose() в которых добавляют или удаляют нужные объекты с экрана проблема начинается со строчки |
|
|||||
Регистрация: Aug 2012
Сообщений: 23
|
не я не пойму)
коменчу: - тормозит коменчу: - всё гладко(правда при этом не 300mb уходит а 170Mb, хотя как показывают эксперименты - объём не вляет на fps) |
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Цитата:
Меня в свое время замучили мувиками с непредсказуемой анимацией внутри. Поэтому в любых мувиках, которые мне готовили другие флешеры, перед использованием я останавливал анимацию вот таким грубоватым способом: public static function stopAllAnimationInContainer(container:DisplayObjectContainer) : void { if (!container) return; if (container as MovieClip) (container as MovieClip).stop(); if (container.numChildren > 0) { for (var i:int = 0; i < container.numChildren; i++) { var child:DisplayObjectContainer = container.getChildAt(i) as DisplayObjectContainer; if (child) stopAllAnimationInContainer(child); } } } |
|
|||||
Регистрация: Aug 2012
Сообщений: 23
|
в общем прописал stop() для мувика, удалил всю графику из него(чистый мувиклип), удалил единственный кадр из него.
та же ерунда. тормоза изчезают только когда убираю "= new Enemy01MC()". дела) |
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
А если
заменить на тормоза остаются? А если на ? Добавлено через 2 часа 0 минут В общем, Вы что-то не так делаете. Провел испытания: 1. Кидаем в массив 100000 спрайтов - на FPS никак не сказывается и грузится мгновенно 2. Кидаем в массив 100000 мувиков с анимацией (я кидал микропрелоадер "крутящееся колесико") - грузится долго и FPS падает катастрофически 3. Кидаем в массив 100000 тех же мувиков, но с остановкой анимации - грузится долго, но на FPS не влияет Думаю, Вы просто не остановили анимацию. Последний раз редактировалось mikhailk; 07.03.2013 в 11:29. |
Часовой пояс GMT +4, время: 17:02. |
|
« Предыдущая тема | Следующая тема » |
|
|