|
|
|||||
Оптимизация использования ресурсов
Здравствуйте.
Ответьте пожалуйста на мои несколько вопросов на счёт оптимизации использования ресурсов Flash-плеером. Может кто рылся или знает какие из этих вариантов более быстродействующей и менее ресурсоёмкие, или вообще нет разницы. 1. Аттач мувиклипа, к примеру объект с 4 подклипами у которых разные кейфреймы, но при атаче используется лишь одна. 1.1. Лучше атачить только нужный подклип 1.2. Родителський объект разбить на 4 кейфрейма, и после атачча использовать готуандСтоп 1.3. В родительском объекте при атаче выгружать или скрывать ненужные подклипы 2. Использовать централизованное хранение данных function setRegister(object:String,define:String) { if (eval('register.'+object)!='[object Object]') register[object] = new Object(); if (define) register[object] = (Number(define)==define) ? Number(define) : define; } function getRegister(object:String) { return register[object]; } function Define() { this.register = new Object(); setRegister('library'); setRegister('library.people','people_item'); setRegister('link'); setRegister('link.container','cont'); setRegister('link.peoplebox',getRegister('link.container')+'.peoplebox'); setRegister('link.peopleitem',getRegister('link.peoplebox')+'.items'); } function Init() { Define(); //.......... for (peopls in peopleBox) { var cast :MovieClip = eval(getRegister('link.peopleitem')); var depth :Number = cast.getNextHighestDepth(); var podcast:MovieClip = cast.attachMovie(getRegister('library.people'),'p_'+peopls,depth); // set property for podcast podcast._x = 0; podcast._y = cast._height + 10; //....... delete podcast; delete depth; delete cast; } } Init(); for (peopls in peopleBox) { eval('cont.peoplebox.items').attachMovie('people_item','p_'+peopls,cont.peoplebox.items.getNextHighestDepth()); // set property for item eval('cont.peoplebox.items.p_'+peopls)._x = 0; eval('cont.peoplebox.items.p_'+peopls)._y = cont.peoplebox.items._height + 10; //....... }
__________________
return this... Последний раз редактировалось AlexCooper; 23.02.2011 в 11:48. |
|
|||||
1. Чем меньше приаттаченного лишнего - тем лучше. Если даже элемент клипа имеет _visible=false, флэш его все равно прорисовывает. Это видно по Redraw Regions.
2. Про реестр вообще ничего не понял. Если вам нужен массив с путями к клипам, то и храните эти пути. А все что надо из доп данных - вешайте себе прямо в клип. мой_клип1.блок_данных.имя_свойства_1 мой_клип1.блок_данных.имя_свойства_2 мой_клип1.блок_данных.имя_свойства_3 И так далее. Как бы. |
|
|||||
Реестр я использую как массив (а точнее объект) данных, у меня он хранит практически всё. Очень удобно при написании кода. Ненужно запоминать длинные имена, нужно к примеру изменить свойство н-объекта,
да и если какие коррективы вводятся достаточно изменить данные в реестре. Так же 100% доступность данных при разных "глубинах". + Трасировку всех данных можно произвести в два щелчка, но суть вопроса не в этом, есть ли разница между записями var item :MovieClip = eval(clip); item.prop1= val1; item.prop2= val2; ...... item.propN= valN; Добавлено через 1 минуту Или Я слишком заморочился?) Добавлено через 5 минут За п1. Спасибо
__________________
return this... |
|
|||||
Регистрация: Nov 2008
Сообщений: 528
|
Прежде всего, могу предположить, что вам на самом деле не нужна подобная оптимизация. Если вы чувствуете, что ваша работа потребляет слишком много ресурсов - то, вероятно, ресурсы расходуются по каким-то другим причинам, нежели те пункты, что вы привели.
По-первому вопросу. Я считаю, что dark256 недостаточно обосновал своё мнение. Я работаю с флешем постоянно уже 3 года и, можно сказать, что я профессионал в этом, однако я замеров такого рода не производил. Насколько я знаю, флеш не стремится хранить в памяти те подклипы, которых в данный момент нет в кадре (не visible=false, а именно нет). Если вы перейдёте на другой кадр - флеш, по идее, освободит ненужные теперь подклипы и отправит их к сборщику мусора, и займётся созданием новых клипов, которые появились в этом кадре. То есть, имея клип с разными подклипами на разных кадрах - вы, возможно, будете иметь оверхед в то время, пока после создания клипа вы будете переключаться с первого кадра на кадр с нужным подклипом (сперва будет инстанцирован подклип на первом кадре, а потом выполнен скрипт), однако потом, если вы не будете больше переключать кадры, флеш вернёт себе память, потраченную на первом кадре (в том случае, если вы не написали чего-то такого, что будет удерживать подклипы в памяти). По второму вопросу. Если вам постоянно нужно работать с этими клипами - я бы советовал сохранить где-то их ссылки и пользоваться ссылками, не получая и не вычисляя их каждый раз. |
|
|||||
2 Stargazer: Спасибо за изучение вопроса и ответ.
На данном этапе в фулскрине мувик при наделению мною максимальной нагрузки (перемещение всей сцены) Деспетчер задач показывает до 30% нагрузки на ЦП и при нормальном режиме до 10%, правда это еще малая часть проекта но считаю пока не плохим результатом.
__________________
return this... |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Самый главный совет: Переходите на AVM2 (as3).Там тоже нужна оптимизация, но во первых - сам рендер гораздо быстрее, во вторых - гораздо больше возможностей по разделению в самом языке.
__________________
Отряд Котовскага |
|
|||||
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
Редкие флешки, даже созданные грамотными разработчиками, показывают хорошую производительность в полноэкранном режиме, если внутри них производится анимация более-менее приличного количества обьектов. Котяра вам верный совет дал - переходите на более современные версии Flash-платформы, будет быстрее. Но всё равно не сильно надейтесь на то, что полноэкранная флешка будет "летать".
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого |
|
|||||
На счёт полноэкранного режима я полностью с Вами согласен. Да и за АS3 согласен, но перейти смогу уже ближе к лету, когда закончиться контракт, сейчас же абсолютно нет времени и возможности переходить на третью версию экшена, а очень хочется, потому приходиться извращаться и подымать производительность по самым мелким "деталюшкам".
__________________
return this... |
|
|||||
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
|
Цитата:
__________________
hauts.ru |
Часовой пояс GMT +4, время: 23:27. |
|
« Предыдущая тема | Следующая тема » |
|
|