问答详情
源自:2-5 果实绘制(果实上浮)

为什么果实显示不出来呢?

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;
}


提问者:Coding青天 2018-09-16 17:06

个回答

  • T松子
    2018-09-21 11:19:31
    已采纳

    我觉得有以下几个原因:

    1、html文件中没有包含fruit.js

    2、在主程序main.js中没有调用画果实的函数fruit.draw;

    3、可能拼写错误,比如prototype写为了protoType,只要有一处这样的错误,就会显示不出来,这类错误在控制台显示不出来,比较难找。

    4、...


  • Coding青天
    2018-09-25 21:54:13

    我把整个fruit.js文件删掉重新写突然就好了。感谢回答!!