使用Timer移动对象

时间:2010-09-01 04:07:58

标签: flash actionscript-3

我有一个名为MovingObject的类,它扩展了MovieClip类。这个类将被多次实例化。在这个类中是一个Timer,它处理移动对象的速度。还有另一个名为TheStage的类,这是我将实例化MovingObject的地方。

public class MovingObject extends MovieClip{
     public var tmr:Timer = new Timer(1);
     public function MovingObject(){
         tmr.addEventListener(TimerEvent.TIMER, Move);
     }
     public function StartMove():void{
         this.tmr.start();
     }
     public function ChangeSpeed(delay:Number):void{
         this.tmr.delay = delay;
     }
     public function Move(evt:TimerEvent):void{
        // some codes to make this.x and this.y change
     }
}



public class TheStage extends MovieClip{
    public var objectArray:Array = [];
    public function TheStage(){
         var x:int =0;
         var mcMoveObject;
         while (x!=10){
              mcMoveObject = new MovingObject();
              mcMoveObject.x += 10;//offset between the objects
              mcMoveObject.y += 10;//offset between the objects
              this.addChild(mcMoveObject);
              objectArray.push(mcMoveObject);
              mcMoveObject.tmr.start();
              x++;
         }
    }
    public function ChangeSpeed(delay:Number):void{//some function to change speed
        for(var chilCnt:int =0;chilCnt

假设代码工作正常(我没有调试它),这会使粒子一次性移动。然而,经过几秒钟的运行后,粒子似乎没有彼此同步移动(因为它们之间的距离似乎越来越近)。我需要一些帮助才能让物体随着距离的增加而移动。

2 个答案:

答案 0 :(得分:1)

使用代码,您只能在舞台上看到一个粒子,以下代码不会偏移您的对象!

mcMoveObject = new MovingObject(); 
mcMoveObject.x += 10;//offset between the objects 
mcMoveObject.y += 10;
//since you're instantiating a new MovingObject +=10 doesn't do what you expect
// it simply sets a value of 10 for x & y.

您需要这样做

var objX:int;
var objY:int;

while( x!=10 )
{
   objX +=10;
   objY +=10;

   mcMoveObject = new MovingObject(); 
   mcMoveObject.x += objX; 
   mcMoveObject.y += objY;
   //etc....

然后,你为什么这么称呼?

mcMoveObject.tmr.start();

何时可以这样做

mcMoveObject.StartMove();

你真的尝试过这段代码吗?我不明白为什么你的MovingObjects会不同步,现在他们应该一起移动。

答案 1 :(得分:0)

这是关于粒子的一个很好的资源:

http://sebleedelisle.com/2007/09/as3-particles-1000-extra-free/

我建议您查看提供的代码。