Я дебютирую некоторые классы библиотеки для поведения флокирования/рулевого управления на большом количестве объектов (2000+). Я нахожу, что в < 500 экземплярах, производительность разумна. По мере увеличения числа, частота кадров падает.Оптимизация ActionScript 3 - улучшение производительности с большими # объектами
Я видел замечательную производительность с такими библиотеками, как Flint или Box2D, с нелепыми # частицами/объектами, поэтому должно быть возможно оптимизировать/реорганизовать мой код, чтобы быть немного лучше.
Я знаю основные оптимизации, такие как побитовые операции и оптимизированные для циклов. Есть ли какие-то более фундаментальные подходы, которые я должен рассмотреть? Например, в настоящее время каждый экземпляр представляет собой векторный MovieClip. Будет ли более эффективная работа с BitmapData?
Короче говоря, я верю, что вы правильно относитесь к использованию мувиклипов BitmapData против векторных изображений, вы даже можете получить больше эффективности, просто установив cacheAsBitmap в true на свой MovieClip. Вообще говоря, кажется, что я получил наибольшее повышение производительности в Flex/Flash, которое жестко контролирует создание и уничтожение объектов, я знаю, что это своего рода очевидное, но все, что можно, можно использовать для повторного использования уже созданных объектов. Также как противоречивое, поскольку может показаться, что Number вместо uint или int, поскольку игрок делает лучшую оптимизацию работы с помощью Number. – shaunhusain
В частности, я использовал некоторые из этих методов при оптимизации кода для использования с Google Maps flash api, подробнее об этом здесь http://www.svennerberg.com/2009/01/handling-large-amounts-of-markers-in-google -maps/Я бы также рекомендовал избегать использования Bindable, где это возможно, поскольку это может добавить много ненужных накладных расходов (добавление кода слушателя/диспетчера к вашему AS3 для вас и автоматическая отправка событий дорого). – shaunhusain