问答详情
源自:2-6 果实绘制(果实数量控制)

第二次果实生成没有变大过程!

和老师的执行效果不一样。。第二次生成果实的时候没有变大这一过程,直接上升。。。。 在if(this.y[i]<10){ this.alive[i]=false; this.l[i]=0;                 //加上这句才有变大的过程 } 难道是我漏打老师代码了?

提问者:萌菌丶 2016-04-19 21:07

个回答

  • 萌菌丶
    2016-04-19 21:11:19

    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;

    }

    }

    }