var fruitObj = function() { this.alive = []; 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++) { // 定义果实生命期为true,说白了就是显示 this.alive[i] = true; this.x[i] = 0; this.y[i] = 0; this.spd[i] = Math.random() * 0.01 + 0.005; // 遍历30次,分别得到这30次果实的位置 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]<=15){ this.l[i] +=deltaTime * this.spd[i]; }else { this.y[i]-=this.spd[i] * 5 * 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) { // ane.num == 50 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; }
我觉得有以下几个原因:
1、html文件中没有包含fruit.js
2、在主程序main.js中没有调用画果实的函数fruit.draw;
3、可能拼写错误,比如prototype写为了protoType,只要有一处这样的错误,就会显示不出来,这类错误在控制台显示不出来,比较难找。
4、...
我把整个fruit.js文件删掉重新写突然就好了。感谢回答!!