需要帮助循环在AS3中生成对象

时间:2015-10-22 23:37:40

标签: actionscript-3 flash loops spawning

对于学校我在AS3中为手机创建基本游戏,基本上你需要知道的是我需要一个矩形,舞台的宽度(380)(高度无关紧要)产生顶部然后几秒钟的另一个产生,这个过程无限重复,直到另有说法。我还没有做太多,所以我没有太多的代码可以展示,但是如果有人能告诉我它将如何受到高度赞赏。

我的运动下来,而不是产卵

var rectangle:Shape = new Shape;
var RecTimer:Timer = new Timer(10,10000);
RecTimer.addEventListener(TimerEvent.TIMER, fRecMovement);
RecTimer.start()


function fRecMovement (e:TimerEvent):void {

rectangle.graphics.beginFill(0xFF0000); // choosing the colour for the fill, here it is red
rectangle.graphics.drawRect(0, 0, 480,45.49); // (x spacing, y spacing, width, height)
rectangle.graphics.endFill();
addChild(rectangle); // adds the rectangle to the stage
rectangle.y +=1


}

1 个答案:

答案 0 :(得分:0)

每次要使用new关键字添加内容时,都需要创建一个新形状。但是您还需要跟踪您创建的每个矩形,以便移动它。在下面的代码中,矩形数组是所有矩形的列表。然后,您可以浏览列表并移动每个矩形。

var RecTimer:Timer = new Timer(10,10000);
RecTimer.addEventListener(TimerEvent.TIMER, onTimer);
RecTimer.start();

var rectangles:Array = []; // a list of all the rectangles we've made so far

function spawnRectangle():void {
    var rectangle:Shape = new Shape();
    rectangle.graphics.beginFill(0xFF0000); // choosing the colour for the fill, here it is red
    rectangle.graphics.drawRect(0, nextRectangleY, 480, 45.49); // (x spacing, y spacing, width, height)
    rectangle.graphics.endFill();
    addChild(rectangle); // adds the rectangle to the stage

    rectangles.push(rectangle); // adds the rectangle to our list of rectangles
}

function moveAllRectangles():void {
    for each (var rectangle:* in rectangles) {
        rectangle.y += 1;
    }
}

function onTimer(e:TimerEvent) {
    spawnRectangle();
    moveAllRectangles();
}

每次定时器运行时都会创建一个新的矩形,但是你可能想要慢一点。也许你可以用一个单独的计时器来做到这一点。

另外,如果你继续让这段代码运行,它会慢慢减速并使用大量内存,因为它会继续创建新的矩形而永远不会停止!看看你是否可以想办法限制它。