У меня есть фоновая битмапка, размеры которой просчитываются каждый раз при изменении размеров сцены так, чтобы она была в полтора раза шире и выше сцены. При смещении контейнера с этой битмапкой происходит расчет того, на сколько колонок (они равны ширине отдельного куска карты) сместилась карта, и недостающие куски врисовываются (через BitmapData#copyPixels()), а ненужные наоборот перекрываются. При этом и сама битмапка смещается на ширину недостающих колонок в противоположную сторону. Таким образом, при относительно небольшом размере экранной битмапки, в нее можно врисовывать карту любых размеров, даже если они превыщают допустимые для одной битмап даты.
А сами куски, заранее нарезанной карты, хранятся в двухмерном векторе
Код AS3:
private var _map:Vector.<Vector.<BitmapData>>
Алгоритм сложный, поэтому выкладывать не буду, но работает отлично. Не тормозит даже на относительно слабых компах, при довольно больших размерах карты. Так что советую подумать над чем-то подобным.
п.с. бокс2д сюда вообще ни коим боком не относится.
|