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

时间:2016-09-06 00:51:44

标签: actionscript-3 flash

为我教授的HS多媒体课程设计AS3课程。

我几年没有尝试在课堂上教这个,所以我有点生疏了。我的剧本也可能不那么流畅,因为我的工作基于我之前做过的一些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);
        }   
    }
}

1 个答案:

答案 0 :(得分:1)

在您的代码中,只有当到目前为止创建的lastMeteor的总数(即:totalMeteors)尚未达到{{1}的最大值时,才会丢弃一块石头你指定了!当它达到最大值时,if(lastMeteor<totalMeteors)不会让任何其他&#34;流星&#34;创造发生!!