код не тестировал, плавное движение возможно либо нарисовать либо зациклить кадры со скриптом, либо использовать setInterval() и плавнее всего получается рисованное...

Код AS1/AS2:
walk = function(a:Number){
if(_root.event1._x > -300){
_root.event1._x += a
_root.event2._x += a;
_root.event3._x += a;
_root.event4._x += a;
}else{
clearInterval(tmp)
}
}
this.but_left.onRelease = function() {
tmp = setInterval (walk,10000,-10);
};