在javascript画布中超出了最大调用堆栈大小

时间:2014-01-06 16:22:13

标签: javascript html html5 canvas

所以我在画布上进行网格游戏,如果选择了一个正方形,也会选择围绕它的相同颜色的正方形,当点击正方形时,选中的正方形会爆裂并且新的正方形会下降。

我制作的网格有9行15列 -

tile_array = [[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]];

我用随机颜色的瓷砖填充网格。 并且继续我的悬停功能 -

function over_tile(our_tile) {//, pointer
    our_tile.alpha = 0.5;
    if (our_tile.tile_row > 0) { // top row availiable
        top_tile = this.tile_array[our_tile.tile_row-1][our_tile.tile_column];
        if (top_tile.tile_color == our_tile.tile_color) {
            this.over_tile(top_tile);
        };
    };
    if (our_tile.tile_column < 14) { // right column availiable
        right_tile = this.tile_array[our_tile.tile_row][our_tile.tile_column+1];
        if (right_tile.tile_color == our_tile.tile_color) {
            this.over_tile(right_tile);
        };
    };
    if (our_tile.tile_column > 0) { // left column availiable
        left_tile = this.tile_array[our_tile.tile_row][our_tile.tile_column-1];
        if (left_tile.tile_color == our_tile.tile_color) {
            this.over_tile(left_tile);
        };
    };
    if (our_tile.tile_row < 8) { // bottom row availiable
        bottom_tile = this.tile_array[our_tile.tile_row+1][our_tile.tile_column];
        if (bottom_tile.tile_color == our_tile.tile_color) {
            this.over_tile(bottom_tile);
        };
    };
}

现在我面临的问题是上面的问题是创建了一个超出调用堆栈大小的错误。 但在功能中,如果我评论部分并尝试一些变化正在工作 -

  1. 左列,底行
  2. 左列,顶行
  3. 右栏,底行
  4. 右栏,第一行
  5. 这些正在创造错误 -

    1. 左栏,右栏
    2. 顶行,底行
    3. 并且任何三种或所有组合都不能协同工作,而且每种组合都是单独工作的。我似乎无法弄清楚问题。

1 个答案:

答案 0 :(得分:2)

让矩阵如此:

1 2 3
4 5 6
7 8 9

当您执行底部+左侧,例如5时,呼叫正在扩展,因此:

5->4->7->fin

5->8->7->fin

同样在其他工作案例中。

对于底部+顶部,在5的情况下,您将获得:

5->2->5 (lower than 2)->2 (higher than 5)->5->2->...

同样在其他不起作用的情况下。

尝试标记已访问的图块,以便您再也不会访问它们了。