动画MovieClip随机跳转到屏幕周围

时间:2010-11-19 08:27:49

标签: actionscript-3 animation random movieclip

我有一个苍蝇的动画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;

}

如何修复它,以便每次动画重新开始时苍蝇继续在适当的路径上移动?

1 个答案:

答案 0 :(得分:3)

如果我理解正确的问题,在开始动画时你必须先检查它是否已经开始。

一个简单的布尔变量可以:

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);
   }
}

这样它只会执行一次随机放置代码。