
27.05.2011, 20:32
|
|
Регистрация: May 2011
Сообщений: 8
|
От чего зависит время создания экземпляров классов MovieClip?
Добрый день!
Делаю онлайн игру. Игрок летает по карте и объекты, которые должны попасть в поле его зрения добавляются в ролик.
Столкнулся с такой ситуацией:
(UniversalShip - символ)
var mc:UniversalShip = new UniversalShip() занимает 5 мс. Конструктор специально замерял - столько времени не занимает. Мне нужно создать таких экземпляров за раз штук 300.
Учитывая время на добавление клипа в ролик и т.п. - около 10 мс, т.е. в сумме на 1 такой клип - 15мс.
300 клипов - 4,5 с - явно больше 60 мс (для частоты кадров 24/с).
Окей, с 300 клипами я немного переборщил, это был "стресс тест" для игры. Но, учитывая игроков, НПС и другие игровые объекты может понадобиться создание около 20-30 экземпляров клипа за период одного кадра (450 мс уже не так много, но все же fps падает ужасно, нужно сократить время добавления клипа раз в 10!).
Вопрос: как это оптимизировать?
Кстати, столько же объектов и удаляется, а так как очистка памяти у флэша срабатывает примерно через равные промежутки времени, то в такие моменты игра подвисает примерно на пол секунды. Как это исправить? Или дело не может быть в очистке памяти?
Зависит ли время создания экземпляра MovieClip от количества кадров в клипе? Клип не должен проигрываться, а только стоять на одном кадре. Дело в том, что символ UniversalShip содержит все корабли в отдельных кадрах. Игра получает с сервера тип корабля и переключает клип (gotoAndStop) на фрейм с названием - "тип корабля".
Может, стоит сделать первый кадр пустым для ускорения создания и добавления клипа в ролик?
|