简单(可能过时)AS3 脚本在 30 秒后停止

Simple (maybe antiquated) AS3 script stops after 30 seconds

为 HS 多媒体设计一些 AS3 课程 class 我教。

我已经好几年没在我的 class 中教过这个了,所以我有点生疏了。也有可能我的脚本没有它应该的那样流畅,因为它是基于我很久以前做的一些 AS2 工作。

也就是说,这段代码运行了大约 30 秒,然后停止了。没有错误,在我输入跟踪数组长度的跟踪命令之外没有反馈。

这是让孩子们朝着用 AS3 编写一些游戏的方向发展的课程系列的一部分。在这一个中,我们正在研究创建随机时间和随机放置。我们已经介绍了运动、属性、变量、侦听器和函数。

代码如下:

import flash.events.Event;

var firstMeteor:Number = 1;
var timeSinceLast:Number = 0;
var lastMeteor:Number = 0;
var totalMeteors = 60;
var metProp=.08;
var rocksBox:Array = new Array;
var dropSpeed:Number = 15;
var lowLimit:Number = 350;

stage.addEventListener(Event.ENTER_FRAME,dropRocks);
stage.addEventListener(Event.ENTER_FRAME,moveRocks);

function dropRocks(e:Event):void{
    if(lastMeteor<totalMeteors) {
        if(Math.random() < metProp) {
            lastMeteor++;
            var rock:meteor = new meteor;
            addChild(rock);
            rocksBox.push(rock);
            rock.x = Math.random()*500;
            rock.y = 20;
            timeSinceLast = 0;
        }
    }
    timeSinceLast++;
}

function moveRocks(e:Event):void {
    for(var i:int = rocksBox.length-1; i>=0; i--) {
        rocksBox[i].y += dropSpeed;
        if(rocksBox[i].y>lowLimit) {
            removeChild(rocksBox[i]);
            rocksBox.splice(i,1);
            trace(rocksBox.length);
        }   
    }
}

在您的代码中,只有当到目前为止创建的 meteor 的总数(即 lastMeteor)尚未达到最大数量 totalMeteors 你指定的!当它达到最大值时,if(lastMeteor<totalMeteors) 将不会让任何其他 "meteor" 创建发生!!