0

我正在制作一个 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 功能。

4

1 回答 1

0

创建关卡时:

    for (var i = 1; i <=15; i++) {

在“initAll”函数中:

    for(var i=0;i<=15;i++){

从来没有级别 0,但“initAll”函数需要一个级别。

它不是无效错误的,但是从位置 1 而不是 0 开始填充 JavaScript 数组有点奇怪。

于 2014-03-02T20:59:25.207 回答