Всё не читал, но скролинг в игре делаю так:

Код 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);
var _laier2:Bitmap = new Bitmap();//ещё какой-нибудь слой графики
_laier2.y = -100;
addChild(_camera);
_camera.addChild(_laier2);
_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;
_laier2.x = _avatar.x / 5;//действуем на второй слой графики
_laier2.y = _avatar.y / 4;
}
}
}
Перемещать нужно героя в общем спрайте-контейнере. И перемещать контейнер, в котором все спрайты находятся. Выходит, что надо перемещать и героя, и камеру. В общем просто наглядный пример, можно и под данную задачу подстроить, можно много слоёв графики обработать и скролить их по разному играя значениями в строке _camera.x = -_avatar.x / 2.5 + 20;