0

Я дебютирую некоторые классы библиотеки для поведения флокирования/рулевого управления на большом количестве объектов (2000+). Я нахожу, что в < 500 экземплярах, производительность разумна. По мере увеличения числа, частота кадров падает.Оптимизация ActionScript 3 - улучшение производительности с большими # объектами

Я видел замечательную производительность с такими библиотеками, как Flint или Box2D, с нелепыми # частицами/объектами, поэтому должно быть возможно оптимизировать/реорганизовать мой код, чтобы быть немного лучше.

Я знаю основные оптимизации, такие как побитовые операции и оптимизированные для циклов. Есть ли какие-то более фундаментальные подходы, которые я должен рассмотреть? Например, в настоящее время каждый экземпляр представляет собой векторный MovieClip. Будет ли более эффективная работа с BitmapData?

+0

Короче говоря, я верю, что вы правильно относитесь к использованию мувиклипов BitmapData против векторных изображений, вы даже можете получить больше эффективности, просто установив cacheAsBitmap в true на свой MovieClip. Вообще говоря, кажется, что я получил наибольшее повышение производительности в Flex/Flash, которое жестко контролирует создание и уничтожение объектов, я знаю, что это своего рода очевидное, но все, что можно, можно использовать для повторного использования уже созданных объектов. Также как противоречивое, поскольку может показаться, что Number вместо uint или int, поскольку игрок делает лучшую оптимизацию работы с помощью Number. – shaunhusain

+0

В частности, я использовал некоторые из этих методов при оптимизации кода для использования с Google Maps flash api, подробнее об этом здесь http://www.svennerberg.com/2009/01/handling-large-amounts-of-markers-in-google -maps/Я бы также рекомендовал избегать использования Bindable, где это возможно, поскольку это может добавить много ненужных накладных расходов (добавление кода слушателя/диспетчера к вашему AS3 для вас и автоматическая отправка событий дорого). – shaunhusain

ответ

1

забыть про векторы.

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

dont use vectors. найти способ вокруг него. быть умным. растровые таблицы поиска, кэширование, дополнительные таблицы поиска. тратить ОЗУ на кеширование вещей для разных ориентаций, просмотров, кадров и т. Д., А не тратить PROCESSOR на расточительные циклы процессора.

+0

Теперь я работаю над некоторыми экспериментами BitmapData. В этой области есть тонна оптимизаций, хотя Flash Player 10.1, похоже, делает некоторые из них немного ненужными. Вот фантастический ресурс/учебник (хотя речь идет о частицах, а не о том, что они стекаются) http://unitzeroone.com/blog/2011/01/16/the-particle-sessions-part-one-is-this-it/ –

Смежные вопросы