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