Console.log提供正确的输出,但是当访问设定值时,它输出错误

时间:2016-07-22 01:42:22

标签: javascript node.js game-engine

被叫函数:

this.findVerticalPossibleScoring = function(){
        var possibilitySet = [];
        for (var j = 0; j < 9;j++ ) {
            for (var i = 0; i < 7; ){
                var tempTile = this._tiles[i][j];
                if(this.gameTilesValue[i][j]!=-1){
                    var tileTagValue = this.gameTilesValue[i][j];
                    if(this.gameTilesValue[i+1][j]==tileTagValue && this.gameTilesValue[i+2][j]==tileTagValue){
                        setElement = [];
                        do{
                            var tempPoint = this.makeArray(i,j);
                            setElement.push(tempPoint);
                            console.log(" verical i:"+i+" j:"+j);
                            i=i+1;
                        }while(i<9&&this.gameTilesValue[i][j]==tileTagValue);
                        possibilitySet.push(setElement);
                        continue;
                    }
                }
                i = i+1;
            }
        }
        return possibilitySet;
    };
    this.makeArray = function (a,b){
        console.log("element i:"+a+" j:"+b);
        var arrayTemp = [];
        arrayTemp.push(a);
        arrayTemp.push(b);
        return arrayTemp;
    };

调用功能部分:

if(scoringPossible == true){
                //blast the tiles and add new tiles;
                 var verticalPossibleScoring = this.findVerticalPossibleScoring();
                toBeDeletedTiles = [];
                for(var i=0;i<verticalPossibleScoring.length;i++){
                    var tempSet = verticalPossibleScoring[i];
                    for(var j = 0;j<tempSet.length;j++){
                        var tempSetEntry = tempSet[i];
                        console.log("TILE i:"+tempSetEntry[0]+" j:"+tempSetEntry[1]);
                    }
                }
            }

如果循环调用函数太大,我添加了调用函数以及调用函数。我知道这是臭名昭着的javascript循环问题。我正在使用gc-devkit游戏引擎,它是新的,我是新手。我通过创建自定义类解决了UIImage的相同问题,但在这里我不需要自定义数组。任何人都可以指导我完成这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:1)

在迭代tempSet时使用j作为循环变量,但在从tempSet获取元素时使用i。也许只是改变

var tempSetEntry = tempSet[i];

var tempSetEntry = tempSet[j];