Показать сообщение отдельно
Старый 26.11.2011, 23:28
ProxyGreen вне форума Посмотреть профиль Отправить личное сообщение для ProxyGreen Найти все сообщения от ProxyGreen
  № 6  
Ответить с цитированием
ProxyGreen
 
Аватар для ProxyGreen

Регистрация: Jul 2011
Сообщений: 67
Хммм... что-то я не вижу в этом всём логики, но существует событие 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();
}
Цикл понадобился бы здесь для того что-бы обойти массив с несколькими такими объектами, но у вас один. Перемещение имхо луче определять в полярном виде, а потом уже вычислять сдвиги по декартовым координатам.