я делаю так:

Код AS3:
public function GameView(){
super();
_camera = new Sprite();//камера - просто спрайт, является контейнером
addChild(Dispatcher._store.getBgGame());//задний фон не движимый, если нужен
_avatar = new Sprite();//изображение героя
_avatar.graphics.beginFill(0xff0000);
_avatar.graphics.drawCircle(0, 0, 20);
addChild(_camera);
_camera.addChild(_avatar);
_camera.addChild(Dispatcher._store.getLevelsGraphic());//графика уровня
addEventListener(Event.ENTER_FRAME, update);
}
private function update(evant:Event):void {
_avatar.x = ...;//действуем на героя()
_avatar.y = ...;
_camera.x = -_avatar.x / 2.5 + 20;//действуем на камеру
_camera.y = -_avatar.y / 1.5 + 70;
}
}
}
Перемещать нужно героя в общем спрайте-контейнере. И перемещать контейнер, в котором все спрайты находятся. Выходит, что надо перемещать и героя, и камеру.