請大神幫看看問題出在哪:fruitMonitor(),sendFruit()加上兩函數(shù)后,黃色果實并沒有連續(xù)生成,并且一次都沒生成,在init初始化加入born函數(shù)后可以生成一次果實?
var fruitObj = function ()
{
?? ?this.alive = [];//bool
?? ?this.x = [];
?? ?this.y = [];
?? ?this.l = [];
?? ?this.spd = [];
?? ?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.l[i] = 0;
?? ??? ?this.spd[i] = Math.random()*0.005+0.005;//[0.05,0.15)
?? ??? ?//this.born(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++)
?? ?{
?? ??? ?if(!this.alive[i] )
?? ??? ?{
?? ??? ??? ?if(this.l[i]<14)?? ??? ?
?? ??? ??? ?{
?? ??? ??? ??? ?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];
?? ?this.y[i]= canHeight - ane.len[aneID];
??? this.l[i] = 0;
?? ?this.alive = 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(){
console.log("121212121");
?? ?for (var i = 0; i<fruit.num;i++)
?? ?{
?? ??? ?if(!fruit.alive[i])
?? ??? ?{
?? ??? ??? ?fruit.born(i);
?? ??? ??? ?return;
?? ??? ?}
?? ?}
?? ?
}
2021-09-09
這一段的this.alive = true 改成 this.alive[i] = true
2021-01-22