![]() |
Оптимизация системы частиц.
Вложений: 1
Есть вот такой вот класс... ничего особенного, вроде, но, почему-то, если создавать 200+ частиц использование CPU со временем по-тихоньку увеличивается... Совсем не сильно, но, тем не менее... (количество задействованой памяти при этом не меняется). Может у кого-нибудь есть предположения, что бы это могло быть?
|
Код:
_scene.removeChild(a); |
У меня не наблюдается прироста нагрузки на CPU, постоянно 60-70%, для 300 частиц.
Только fps не очень большой, ну это и понятно, BlurFilter все-таки. Кстати, раз уж заметил, наверное Код:
this.removeEventListener(Event.REMOVED_FROM_STAGE, handleRemoved); |
Тоже проверил - прироста CPU Usage нет. Хотя визуально со временем тормозить начинает сильнее.
|
@ L1965:
В принципе, вариант. Это немного другая анимация получится, но вобщем, тоже можно. Хм... не знаю, может показалось, или что-то на фоне ему мешало... надо будет еще вечером попробывать. Edit: Ого... поменял удаление-добавление на смену координат, почти в 2 раза меньше нагрузка стала... пасиб =) |
Добавь
Код:
cacheAsBitmap = true; |
О, пасиб. Хм... я думал, что шейп с битмап заливкой должен и так восприниматься как битмап... может тогда вообще Particle от Bitmap унаследовать...
Прикольно =) 2000 заблуреных частиц да еще и с прозрачностью рисуются вполне нормально при 30 ФПС (у меня CPU Usage даж за 50% не переходит). Чесно, даж не думал, что флеш такое может =) |
А ещё можеш позаменять все
Код:
new Point(...)Код:
private var tempPoint:Pointтак же вынести побольше чего в private. А вообще forEach работает медленнее чем обычный Код:
var i:int = 0; |
Чего-то мне по поводу forEach сомнительно... по идее не дложно так быть... но еще не проверял, проверю - скажу =)
По поводу новых поинтов - да, это я уже понял, что создать объект - дороже получается, чем свойства поменять =) так и сделал. У меня там вроде паблики только методы... там нету пабликов свойств... (или, если имеются в виду свойства партикла, то их максимум на интернал можно поменять... но, не думаю, что будет разница) сорри, сейчас просто не могу проверить, чуть пожже. Но все равно спасибо =) |
Про private я хотел сказать что в цикле var i:int = _array[i] - работает медленнее нежели объявить i вне цикла а изменять её в самом цикле, а самые часто используемые вынести вообще в область видимости класса.
(ведь минимум все с локальной областью видимости var'ы нужно потом габаджем удалять) Проверил твои пересчёты просто в цикле без изменений свойств(перерисовки) работают быстрее на 70% чем forEach Даёш 3к частиц без тормозов:) |
| Часовой пояс GMT +4, время: 18:16. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.