Flash 在AS3中使用计时器的对象

Flash 在AS3中使用计时器的对象,flash,actionscript-3,timer,Flash,Actionscript 3,Timer,我有一个名为MovingObject的类,它扩展了MovieClip类。这个类将被实例化多次。该类中有一个计时器,用于处理对象移动的速度。还有另一个类叫做TheStage,我将在这里实例化MovingObject 公共类MovingObject扩展了MovieClip{ 公共变量tmr:计时器=新计时器(1); 公共功能移动对象(){ tmr.addEventListener(TimerEvent.TIMER,Move); } 公共函数StartMove():void{ this.tmr.sta

我有一个名为MovingObject的类,它扩展了MovieClip类。这个类将被实例化多次。该类中有一个计时器,用于处理对象移动的速度。还有另一个类叫做TheStage,我将在这里实例化MovingObject

公共类MovingObject扩展了MovieClip{
公共变量tmr:计时器=新计时器(1);
公共功能移动对象(){
tmr.addEventListener(TimerEvent.TIMER,Move);
}
公共函数StartMove():void{
this.tmr.start();
}
公共功能更改速度(延迟:编号):无效{
this.tmr.delay=延迟;
}
公共功能移动(evt:TimerEvent):无效{
//一些代码使这个.x和这个.y发生变化
}
}
公共类舞台延伸了电影唇{
公共var objectArray:Array=[];
舞台上的公共功能{
变量x:int=0;
var mcMoveObject;
而(x!=10){
mcMoveObject=新的MovingObject();
mcMoveObject.x+=10;//对象之间的偏移量
mcMoveObject.y+=10;//对象之间的偏移量
this.addChild(mcMoveObject);
push(mcMoveObject);
mcMoveObject.tmr.start();
x++;
}
}
公共函数ChangeSpeed(delay:Number):void{//要更改速度的某些函数

对于(var chilCnt:int=0;chilCnt,代码保持不变,您将在舞台上只看到一个粒子,以下代码不会偏移您的对象

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.
你真的试过这个代码吗?我不明白为什么你的移动对象会不同步,现在它们应该一起移动。

不,我没有试过确切的代码。是的,在那里指定X和Y只会导致对象重叠。我的意思是对象之间会有空格。关于启动对象from移动,我可以启动tmr和触发功能。我忘记使用该功能。在Flash中,当几个计时器同时工作时,对象似乎不会均匀移动。我知道现在该怎么做。有两种解决方案。一种是在MovingObject中指定为静态计时器。当调用静态计时器时,这将导致所有对象都受到影响。另一种解决方案是在Stage类上而不是在MovingObject上分配计时器,以便只有一个计时器移动所有对象。的可能重复 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();