Анимированный мувиклип скачет по экрану случайным образом

У меня есть анимированный MovieClip мухи, которая появляется в случайном месте и перемещается по экрану, отскакивая от стен. Но каждый раз, когда анимация начинается заново, кажется, что она "прыгает" в случайное место. Вот код, который у меня есть, когда он появляется:

private function beginClass(e:Event):void{
   _root = MovieClip(root);

   do { 
    xRandom = Math.floor(Math.random() * 500); 
    yRandom = Math.floor(Math.random() * 350); 
    this.x = xRandom;
    this.y = yRandom;
    } while (Math.abs(xRandom - mouseX) > 20 && Math.abs(yRandom - mouseY) > 20);

  }

А это код его движения:

//Bouncing the fly off of the walls
   if(this.x >= stage.stageWidth-this.width){
   //if the fly hits the right side
   //of the screen, then bounce off
   flyXSpeed *= -1;
   }
   if(this.x <= 0){
   //if the fly hits the left side
   //of the screen, then bounce off
   flyXSpeed *= -1;
   }
   if(this.y >= stage.stageHeight-this.height){
   //if the fly hits the bottom
   //then bounce up
   flyYSpeed *= -1;
   }
   if(this.y <= 0){
   //if the fly hits the top
   //then bounce down
   flyYSpeed *= -1;

}

Как мне исправить это, чтобы муха продолжала двигаться по соответствующему пути каждый раз, когда анимация начинается заново?


person Lani    schedule 19.11.2010    source источник


Ответы (1)


Если я правильно понимаю проблему, то при запуске анимации надо проверять, не запускалась ли она ранее.

Простая логическая переменная подойдет:

private var hasStarted:Boolean = false;    

private function beginClass(e:Event):void{
   _root = MovieClip(root);

   if (!hasStarted) {
       hasStarted = true;

       do { 
           xRandom = Math.floor(Math.random() * 500); 
           yRandom = Math.floor(Math.random() * 350); 
           this.x = xRandom;
           this.y = yRandom;
       } while (Math.abs(xRandom - mouseX) > 20 && Math.abs(yRandom - mouseY) > 20);
   }
}

Таким образом, он будет выполнять код случайного размещения только один раз.

person BoppreH    schedule 19.11.2010
comment
Ничего себе, это заняло всего 2 секунды, и это полностью исправило это! Спасибо!!! - person Lani; 20.11.2010