Хммм... что-то я не вижу в этом всём логики, но существует событие TimerEvent.TIMER_COMPLETE. Установите свой таймер на десять итераций (или сколько вам надо):

Код AS3:
var timerRep:int=10;
var animateTimer:Timer = new Timer(1000, timerRep);
Подпишите на события, по TimerEvent.TIMER изменяйте координаты, а по TimerEvent.TIMER_COMPLETE возвращайте объект на исходную позицию, (которую следует предварительно сохранить в переменной естественно) и перезапускайте таймер:

Код AS3:
var pointA:Point=new Point();
var redDot:RedDot = new RedDot();
redDot.x = pointA.x=Math.random()*stage.stageWidth;
redDot.y = pointA.y= Math.random()*stage.stageHeight;
animateTimer.addEventListener(TimerEvent.TIMER, timerListener);
animateTimer.addEventListener(TimerEvent.TIMER_COMPLETE, timerCompleteListener);
animateTimer.start();

Код AS3:
private function timerListener(e:TimerEvent):void{
redDot.x += slopeX;
redDot.y += slopeY;
}
private function timerCompleteListener(e:TimerEvent):void{
redDot.x = pointA.x;
redDot.y = pointA.y;
animateTimer.start();
}
Цикл понадобился бы здесь для того что-бы обойти массив с несколькими такими объектами, но у вас один. Перемещение имхо луче определять в полярном виде, а потом уже вычислять сдвиги по декартовым координатам.