我有一个名为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<objectArray.length; chilCnt++){
objectArray[chilCnt].timer.delay = delay;
}
}
}
假设代码工作正常(我没有调试它),这会使粒子一次性移动。然而,经过几秒钟的运行后,粒子似乎没有彼此同步移动(因为它们之间的距离似乎越来越近)。我需要一些帮助才能让物体随着距离的增加而移动。
答案 0 :(得分:0)
使用代码,您只能在舞台上看到一个粒子,以下代码不会偏移您的对象!
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会不同步,现在他们应该一起移动。