和老师的执行效果不一样。。第二次生成果实的时候没有变大这一过程,直接上升。。。。 在if(this.y[i]<10){ this.alive[i]=false; this.l[i]=0; //加上这句才有变大的过程 } 难道是我漏打老师代码了?
var fruit=function(){
this.x=[];
this.y=[];
this.l=[];
this.spd=[];
this.alive=[];
this.orange=new Image();
this.blue=new Image();
}
fruit.prototype.num=30;
fruit.prototype.init=function(){
for(var i=0;i<this.num;i++){
this.alive[i]=false;
this.x[i]=0;
this.y[i]=0;
this.l[i]=0;
this.spd[i]=Math.random()*0.01+0.005; //果实上升速度变化区间
this.born(i);
}
this.orange.src="img/fruit.png"; //果实图片
this.blue.src="img/blue.png"; //果实图片
}
fruit.prototype.draw=function(){
for(var i=0;i<this.num;i++){
if(this.alive[i]){
if(this.l[i]<=14){
this.l[i]+=this.spd[i]*deltaTime; //果实跟随时间变化度而变化多少,如果在谷歌切换了页面,则此页面js不执行,deltaTime会变的很大
}else{
this.y[i]-=this.spd[i]*7*deltaTime;
}
ctx2.drawImage(this.orange,this.x[i]-this.l[i]*0.5,this.y[i]-this.l[i]*0.5,this.l[i],this.l[i]);
if(this.y[i]<10){
this.alive[i]=false;
this.l[i]=0; //我自己加上的,不加在第二次生成果实的时候没有变大这个过程,果实就会直接上升
}
}
}
}
fruit.prototype.born=function(i){
var aneID=Math.floor(Math.random() * ane.num);
this.x[i]=ane.x[aneID];
this.y[i]=canHeight-ane.len[aneID];
this.alive[i]=true;
}
function fruitMonitor(){
var num=0;
for(var i=0;i<fruit.num;i++){
if(fruit.alive[i]){num++;}
}
if(num<15){
sendFruit();
return;
}
}
function sendFruit(){
for(var i=0;i<fruit.num;i++){
if(!fruit.alive[i]){
fruit.born(i); //判断果实是否出现
return;
}
}
}