Устранить отставание в программе листов AS3

ЗАПРОС

Я создаю программу, в которой много плиток в среде, состоящей из клипов. Игрок может перемещаться в этой среде. Как я могу скрыть плитки, которые находятся за пределами экрана, чтобы уменьшить задержку?

Все плитки представляют собой двумерный массив размером 20 единиц по горизонтали и 10 единиц по вертикали. Дайте мне знать, если у вас есть какие-либо предложения!

БОЛЬШЕ ИНФОРМАЦИИ

У меня есть класс Tile для плитки, поэтому я могу добавить в него функции для удаления. Я просто не знаю, как это сделать.

-Олин


person Olin Kirkland    schedule 21.09.2012    source источник
comment
Возможно, вам захочется изучить некоторые существующие игровые платформы на основе тайлов для AS3, такие как Flixel, или загляните на эту страницу ironcoding.com/2011/02/ или загляните на эту страницу, если вы хотите использовать Stage3D для повышения производительности на основе графического процессора active.tutsplus.com/tutorials/ игры/   -  person shaunhusain    schedule 21.09.2012
comment
В качестве альтернативы, чтобы сделать это самостоятельно, я бы предложил придумать систему для отслеживания текущей позиции в декартовых координатах, а также ширины и высоты окна просмотра. С помощью этих трех частей информации вы можете вычислить, что верхний левый и нижний правый плитки будут включать все плитки между ними.   -  person shaunhusain    schedule 21.09.2012
comment
Самые простые вещи, которые приходят на ум: 1. Если ваши плитки находятся внутри спрайта, попробуйте использовать свойство scrollRect, которое работает как маска. 2. Если это не сработает, попробуйте выполнить базовое копирование (нарисуйте все плитки в один большой BitmapData, затем, в зависимости от того, какую область необходимо отобразить, используйте метод copyPixels BitmapData, чтобы скопировать нужную область из плиток для отображения в видимая область). Это только для основного теста. Совет @shaunhusain очень полезен   -  person George Profenza    schedule 21.09.2012


Ответы (1)


Похоже, вы ищете, как сделать более тонкое управление памятью, вспоминая память из плиток, которых больше нет на экране, во Flash или любом другом языке, что приводит к байт-коду, который затем запускается на виртуальной машине, которая обрабатывает память низкого уровня. управление и сборка мусора, ваш контроль над освобождением памяти ограничен. Лучше всего в этих случаях использовать пулы объектов для динамического выделения необходимого количества объектов, затем сохранять их и просто помечать как неиспользуемые, когда они готовы к повторному использованию.

Подробнее об объединении объектов в AS3 читайте здесь: http://help.adobe.com/en_US/as3/mobile/WS948100b6829bd5a6-19cd3c2412513c24bce-8000.html

или по работе со сборщиком мусора здесь: http://help.adobe.com/en_US/as3/mobile/WS4bebcd66a74275c3-576ba64d124318d7189-7ffc.html

Вся часть верхнего уровня (экономия памяти): http://help.adobe.com/en_US/as3/mobile/WS4bebcd66a74275c333637c44124318c9bf9-8000.html

даже несмотря на то, что все это находится в мобильном каталоге, я готов поспорить, что информация так же актуальна и для настольных компьютеров.

person shaunhusain    schedule 21.09.2012