我正在制作一个 HTML5 游戏并为它考虑 15 个级别。我有一个包含关卡对象的关卡类。这是它的代码部分。
function levels(){
this.allLevels=[];
for (var i = 1; i <=15; i++) {
this.allLevels[this.allLevels.length]=new level(); //LEVEL OBJECTS CREATED INTO OBJECT
this.allLevels[this.allLevels.length-1].levelNumber=i; //LEVEL NUMBERS ARE SET
(i==1)? this.allLevels[this.allLevels.length-1].state='ZERO':this.allLevels[this.allLevels.length-1].state='LOCKED'; //LEVEL STATES ARE SET
}
}
如您所见,我有一个 allLevels 数组来保存关卡信息。到目前为止一切正常。创建这个类后,我向这个类添加了 init 和 draw 方法。这里是;
levels.prototype.initAll = function(){
for(var i=0;i<=15;i++){
this.allLevels[i].initAllCoor();
}
};
levels.prototype.draw=function(){
this.cleanCanvas();
for(var i=0;i<=15;i++){
this.allLevels[i].drawLevelIcon();
}
};
levels.prototype.cleanCanvas=function(){
ctxCanvasLevels.clearRect(0,0,800,570);
};
它现在只有三种方法。您看到的函数(initAllCoor 和 drawLevelIcon)是关卡对象的方法。当我调用这些方法时,一切正常。
你可以说如果一切正常你在问什么。尽管一切顺利,但我在 Chrome 的控制台上遇到了错误。
Uncaught TypeError: Cannot call method 'initAllCoor' of undefined
Uncaught TypeError: Cannot call method 'drawLevelIcon' of undefined
我不明白,它说“不能打电话”,但确实如此。由于这个错误,我也不能使用 console.log 功能。