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