ну так а с какой стати карта должна прокручиваться если ты ее вообще не двигаешь, а двигаешь персонажа? =) То, что ты делаешь - не логично. Персонаж должен быть все время по центру, а _какрта_ должна двигаться.
Ну, если совсем просто: допиши во всех местах, где ты двигаешь персонажа смещение для _root'a такое же, как и для персонажа, только со зеаком минус =)

Код:
onClipEvent (load) {
_root.speed = 4.2;
gravity = 1;
jump = 15;
_root.speedy = 0;
}
onClipEvent (enterFrame) {
_x += _root.speedx;
_y += _root.speedy;
_root._x -= _root.speedx;
_root._y -= _root.speedy;
if (_root.area.hitTest(_x, _y+_height/2, true) == false) {
fall1 = true;
} else {
fall1 = false;
}
if (_root.area.hitTest(_x-_width/2, _y, true) == false and _root.area.hitTest(_x-_width/4, _y+_height/4, true) == false) {
fall2 = true;
} else {
fall2 = false;
_x += 0.21;
}
if (_root.area.hitTest(_x+_width/2, _y, true) == false and _root.area.hitTest(_x+_width/4, _y+_height/4, true) == false) {
fall3 = true;
} else {
fall3 = false;
_x -= 0.21;
_root._x += 0.21;
}
if (fall1 == true and fall2 == true and fall3 == true) {
_root.speedy += gravity;
} else {
_root.speedy = 0;
}
if (fall1 == false and fall2 == false and fall3 == false) {
_y -= 1;
_root._y += 1;
}
if (Key.isDown(Key.LEFT)) {
if (_root.area.hitTest(_x-_width/2, _y, true) == false and _root.area.hitTest(_x-_width/4, _y+_height/5, true) == false) {
_x -= _root.speed;
_root._x += _root.speed;
}
}
if (Key.isDown(Key.RIGHT)) {
if (_root.area.hitTest(_x+_width/2, _y, true) == false and _root.area.hitTest(_x+_width/4, _y+_height/5, true) == false) {
_x += _root.speed;
_root._x -= _root.speed;
}
}
if (Key.isDown(68)) {
_root.clipper.gotoAndStop("jump");
if (fall1 == false or fall2 == false or fall3 == false) {
_root.speedy = -jump;
}
}
if (_root.area.hitTest(_x, _y-_height/2, true) == true) {
_root.speedy = 2.1;
_root.clipper.gotoAndStop("head");
}
}