Я разрабатываю 2D-шутер с множеством объектов и агрессивной прокруткой.
ВОПРОС: , какой способ лучше?
ВЫБОР 1 - используйте встроенный рендеринг Flash:
- вывести игровые объекты из Bitmap, использовать существующие x, y, width, height, bitmapDatali >
- добавить все объекты в виде дочерних элементов. UIComponent.addChild(...) to sccreen
- область видимости клипа с помощью функции "scrollRect"
CHOICE 2 - написать собственный рендеринг с использованием "bitmap + copyPixels"
- использовать собственный игровой объект с x, y, width, height, bitmapDatali >
- добавьте растровое изображение на экран, возьмем bitmapData из него
- перерисовать каждый элемент ENTER_FRAME: bitmapData.lock(), перебирать игровые объекты и copyPixels() в bitmapData, затем bitmapData.unlock()
- настраиваемый клиппинг: не отображать из экранных объектов
Здесь в question некоторые люди жалуются, что "bitmap + copyPixels()" медленный.
ЭКСПЕРИМЕНТ: Я реализовал оба метода:
- main_1.swf - native
- main_2.swf - пользовательский
Пожалуйста, попробуйте и скажите, какой из них лучше (быстрее, плавнее, меньше ест процессор).
Подождите, пока не будет не менее 250 врагов (счетчик над экраном).
ОБНОВЛЕНИЕ:. Попробуйте открыть диспетчер задач (или $top) и посмотреть общее использование ЦП.
ОБНОВЛЕНИЕ 2: Я изменил код, теперь он ползет быстрее.