Зделайте наоборот - герой ходит по карте и на нем сфокусирована камера.

Код AS1/AS2:
var map:MovieClip;//- мувик карты
var hero:MovieClip;// - мувик героя (он находится на карте, соответственно в мувику map)
//Далее делаем так, чтобы герой был всегда по центру экрана
var rect_mask:Rectangle;// - прямоугольная область которая будет видна на экране
//rect_mask.x rect_mask.y - координаты верхнего левого угла видимой области
//rect_mask.width rect_mask.height - ширина и высота видимой области
var stageWidth:int; - ширина экрана
var stageHeight:int; - высота экрана
//для того, что бы герой был всегда по центру экрана нужно чтобы он был в центре этой прямоугольной области
rect_mask.x=hero.x-stageWidth/2;
rect_mask.y=hero.y-stageHeight/2;
rect_mask.width=stageWidth;
rect_mask.heigth=stageHeight;
map.scrollRect = rect_mask;// выводим на экран прямоугольную область на экран
вроде так. Плюс контроль границ карты.
Таким образом, карта неподвижна, двигаются только юниты на ней, посему ненужно ее перерисовывать каждый раз, двигать ее мувик, двигать статические обекты на ней. Скролрект попиксельно скопирует содержимое мар на экран, так должно быть быстрее. Плюс к этому, логичнее, когда юниты двигаются по карте, а не когда под героем ездит карта. При этом нужно будет делать апдейт только движущихся обектов, деревья и все остальное трогать не надо будет.
http://murejib.com/2008/04/24/ scrollrect-2/