为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的代码是照着老师的敲得,但是果实却只能生长一个,一开始的30个不见了

为什么我的代码是照着老师的敲得,但是果实却只能生长一个,一开始的30个不见了

正在回答

4 回答

代码呢?

0 回复 有任何疑惑可以回复我~
#1

姑娘有点太傲娇 提问者

我贴了代码了 麻烦帮忙看看
2016-01-11 回复 有任何疑惑可以回复我~
#2

姑娘有点太傲娇 提问者

非常感谢!
2016-01-11 回复 有任何疑惑可以回复我~

function drawBackground(){
   ctx2.drawImage(bgPic,0,0,canW,canH);
}
/**ane海葵*/
var aneObj = function(){
   this.x = [];
   this.len = [];
}
aneObj.prototype.num = 50; //数量
aneObj.prototype.init = function(){
   for(var i=0;i<this.num;i++){
       this.x[i] = i*16+Math.random()*20;
       this.len[i] = 160+Math.random()*50;
   }
};
//画海葵
aneObj.prototype.draw = function(){
   ctx2.save();
   ctx2.globalAlpha = 0.6;//透明度
   ctx2.lineWidth = 20;
   ctx2.lineCap = "round";
   ctx2.strokeStyle = "#9AFF9A";
   for(var i=0;i<this.num;i++){
       ctx2.beginPath();
       ctx2.moveTo(this.x[i],canH);
       ctx2.lineTo(this.x[i],canH-this.len[i]);
       ctx2.stroke();
   }
   ctx2.restore();
};
/*fruit 果实*/
var fruitObj = function(){
   this.alive = []; //bool是否有果实
   this.x =[];
   this.y=[];
   this.L =[];//果实的坐标变动移动
   this.sd =[];//果实的速度
   this.fruitType = []; //果实类型
   this.orange = new Image(); //黄色果实
   this.blue = new Image();//蓝色果实
}
fruitObj.prototype.num =  30;

fruitObj.prototype.init = function(){
   for(var i=0;i<this.num;i++){

       this.alive[i] = false ;
       this.x[i] =0;
       this.y[i]=0;
       this.sd[i]= Math.random()*0.01+0.003;
       //this.born(i);
       this.fruitType[i] ="";
   }
   this.orange.src = "./src/fruit.png";
   this.blue.src = "./src/blue.png";

}
//画果实 果实成熟时出现果实 果实最大显示多少个果实
fruitObj.prototype.draw = function(){
   for(var i=0;i<this.num;i++){
       //draw  画果实
      if(this.alive[i]) {
          var pic;
          if(this.fruitType[i] == "blue"){
               pic = this.blue;
          }else{
              pic = this.orange;
          }
          if (this.L[i] <= 20) {
              this.L[i] += this.sd[i] * deltaTime;
          } else {
              this.y[i] -= this.sd[i] * 2 * deltaTime;
          }
          ctx2.drawImage(pic, 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;
          }
      }
   }
}
fruitObj.prototype.born = function(i){
  //记录坐标 海葵生长位置
   var aneID = Math.floor(Math.random()*ane.num); //随机排重
    this.x[i] = ane.x[aneID];
    this.y[i] = canH - ane.len[aneID];
    this.L[i] = 0;
    this.alive[i] = true;
//    果实类型
   var ran = Math.random();
   if(ran<0.25){
    this.fruitType[i]= "blue";
   }else{
       this.fruitType[i]= "orange";
   }

}
//判断当前屏幕显示的果实数量
function fruitMonitor (){
   var num = 0;
   for(var i=0;i<fruit.num;i++){
       if(fruit.alive[i])num++;
   }
   if(num<15){
      senFruit();
       return;
   }
}
function senFruit(){
   for(var i=0;i<fruit.num;i++){
       if(!fruit.alive[i]){
         fruit.born(i);
           return;
       }
   }
}

按照我的对比一下

0 回复 有任何疑惑可以回复我~

    this.born(i);去掉就对了。。

0 回复 有任何疑惑可以回复我~

var fruitObj= function()

{

    this.alive= [];//是否活着,这里是一个booleans(布尔值)

    this.x=[];

    this.y=[];

    this.l=[];

    this.spd=[];//果实的速度 

    this.blue=new Image();

    this.orange= new Image();

}

fruitObj.prototype.num= 30;

fruitObj.prototype.init= function()//初始化

{

    for (var i=0; i<this.num; i++)

    {

        //this.alive[i]= false;定义果实的初始值为false代表这个时期果实处于休眠

        this.alive[i]= false;

        this.x[i]= 0;

        this.y[i]= 0;

        this.spd[i]= Math.random()*0.017+0.003;//果实漂浮的速度随机[0.003,0.02)

        this.born(i);



    }

    this.blue.src="./src/blue.png";

    this.orange.src="./src/fruit.png";

}

fruitObj.prototype.draw= function()//画果实

{

    //果实的两个状态,一个是长在海葵上面,另一个是成熟后脱离海葵;

    for (var i=0; i<this.num; i++)

    {

        //draw画果实

        // find an one(找个一个果实),grow(成长),fly up(上浮)

            if(this.alive=[i])

            {

                if(this.l[i]<=15)

                {

                    this.l[i]+= this.spd[i]*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;

                }

            }


    }

}

fruitObj.prototype.born= function(i)//果实的成长

{

    //随机找一个海葵

    var aneId=Math.floor(Math.random()*ane.num);

    this.x[i]= ane.x[aneId];//果实的x值

    this.y[i]= canHeight-ane.len[aneId];//果实的y值

    this.l[i]= 0;

    this.alive[i]= true;

}

fruitObj.prototype.update= function()//果实的更新

{

    var num= 0;

    for (var i=0; i<fruit.num; i++)

    {

        if (fruit.alive[i])

        num++;

    }

}

function fruitMonitor()//果实的监听功能

{

    var num = 0;//果实的数据统计

    for (var i= 0; i<fruit.num; i++)//判断屏幕上当前有多少个果实是活着的

        {

        if (fruit.alive[i])

            num++;

            //如果状态就是一个活着的状态,我们就来做一个数据统计



        }

        if (num<15)

        //如果小于15个

        {

        //send fruit 让一个果实出生

        sendFruit();

        return;

        }





}

function sendFruit()

{

    for (var i=0; i<fruitObj.prototype.num; i++)

    {

        if(fruit.alive[i]= false)

        {

            fruit.born(i);

            return;

        }

    }

}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我的代码是照着老师的敲得,但是果实却只能生长一个,一开始的30个不见了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信