Форум 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=212604)

Godwarlock 24.03.2016 00:00

Вопрос по добавлению объектов
 
Всем привет. Создается к примеру 2000 объектов. Добавление объектов идет таким образом
Код AS3:

var model:MovieClip = new (ApplicationDomain.currentDomain.getDefinition("object_" + id) as Class);//object_+id - это ссылка на экземпляр movieClip с картинкой.
addChild(model);

Скажите чем плох таков вариант, если подобных объектов очень много добавляется на сцену? Подскажите другие варианты реализации, более оптимизированные, если таково надо.

faraday 24.03.2016 01:00

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

Godwarlock 24.03.2016 01:52

Атлас я так понимаю, это вектор битмап? А как это повлияет на производительность?

faraday 24.03.2016 02:57

напиши конкретнее задачу, что содержат мувиклипы. если картинки, то все 2000 разные?

Godwarlock 24.03.2016 04:23

Мувиклипы содержат 8 картинок(по 1 картинке на кадр). Активна только 1 картинка из всех 8, то есть она указывается в gotoAndStop(1-8). Каждый объект - это отдельная картинка. В зависимости от того, какой порядковый номер передается в параметр, устанавливается кадр мувиклипа, ну как и сказал указывается в gas.
Код AS3:

если картинки, то все 2000 разные?

Нет. 60% из них могут быть одинаковые.
Цитата:

напиши конкретнее задачу
Единственная задача - это оптимизировать большую генерируемую карту. Я и обрезаю область вьюшки, обрезаю неактивные объекты в этой области и прописываю casheAsBitmap(что кстати дало немного фпсу), пробовал переводить картинку мувиклипа в битмапу и добавлял уже битмапу, а не мувиклип(что не дало никакой производительность, а только понизилась) и растеризацию по такой штуке http://www.ant-karlov.ru/iz-vektora-v-rastr.html проводил(то есть добавлял уже не мувиклипы, а цеплял из массива битмап, что понизило опять же производительность). И качество картинок обрезал до jpeg 60, без сглаживания. Нефига. На моей системе кое-как держится fps от 55-60(i3) в редких случаях падает до 48, на более старых системах, например двухядерных fps падает до 20, а то и меньше при скроллинге этой карты. Я убирал эти 2000 объектов(одного размера) и оставлял 130 разного. Фпс естественно возрастает, но все равно на старой системе при движении фпс падает примерно до 35-40. Если не двигать ничего, то стабильно 60.

caseyryan 24.03.2016 06:08

Цитата:

Сообщение от Godwarlock (Сообщение 1192910)
Атлас я так понимаю, это вектор битмап? А как это повлияет на производительность?

Это атлас текстур

Godwarlock 24.03.2016 19:10

caseyryanОкей. Так как это повлияет на производительность? Тайлсет в одной битмапе, ведь тоже по сути можно считать атласом? Но за счет чего будет прирост?

faraday 24.03.2016 20:52

если ты уже используешь тайлсет, то откуда появляются мувиклипы? на сцене одновременно не должно добавляться да и находится 2000 объектов. перерисовывай только вьювпорт

Godwarlock 24.03.2016 22:24

Визуально, там где находится персонаж, добавлено около 200 объектов, остальные 1800 удаляются со сцены и добавляются, только тогда, когда они попадают в фокус. Тайлсет я не использую, но могу попробовать и чтобы начать, хотелось бы услышать ответ, чем это лучше обычных мувиклипов.

caseyryan 25.03.2016 08:38

Вместо мувиклипов лучше использовать для обертки Sprite, он более легковесный, не имеет временной шкалы, которую нужно все время считать.
И второе, зачем у тебя создается 2000 новых объектов? Почему ты не используешь пул?


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

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