0

我的扫雷器有一些滞后问题,无法弄清楚是什么导致了这个问题。当显示更多图块时,滞后(但不是灾难性的)会叠加(自己尝试一下!),因此我将滞后的可能来源限制为以下几个函数:

function unhide(cell) { //called when user clicks a tile with class "hidden"
if ($(cell).hasClass('hidden')) {
    $(cell).removeClass('hidden');
    getclass(cell);
    if ($(cell).hasClass('miina')) {;
        locked = true;
        $('td').removeClass('hidden');
        textuncover();
        $('#endbox2').slideDown('slow');
        aika = null;
    }
    else if($(cell).hasClass('0')) {
        reveal(cell);
        revealmore();
    };
  };
};


function reveal(cell) { //if the clicked cell has no mines around it, the function reveals the mines the tile is touching
var row_crnt = $(cell).parent().parent().children().index($(cell).parent());
var cell_crnt = = $(cell).parent().children().index($(cell));
var row_new;
var cell_new;
if(row_crnt!=0) {
    row_new=miinakentta.rows[row_crnt -1];
    cell_new = row_new.cells[cell_crnt];
    $(cell_new).removeClass('hidden');
    getclass(cell_new);
};
if(row_crnt!=15) {
    row_new=miinakentta.rows[row_crnt +1];
    cell_new = row_new.cells[cell_crnt];
    $(cell_new).removeClass('hidden');
    getclass(cell_new);
};
if(cell_crnt!=0) {
    row_new=miinakentta.rows[row_crnt];
    cell_new = row_new.cells[cell_crnt -1];
    $(cell_new).removeClass('hidden');
    getclass(cell_new);
};
if(cell_crnt!=15) {
    row_new=miinakentta.rows[row_crnt];
    cell_new = row_new.cells[cell_crnt +1];
    $(cell_new).removeClass('hidden');
    getclass(cell_new);
};
if(row_crnt!=0 && cell_crnt!=0) {
    row_new=miinakentta.rows[row_crnt -1];
    cell_new = row_new.cells[cell_crnt -1];
    $(cell_new).removeClass('hidden');
    getclass(cell_new);
};
if(row_crnt!=15 && cell_crnt!=15) {
    row_new=miinakentta.rows[row_crnt +1];
    cell_new = row_new.cells[cell_crnt +1];
    $(cell_new).removeClass('hidden');
    getclass(cell_new);
};
if(row_crnt!=0 && cell_crnt!=15) {
    row_new=miinakentta.rows[row_crnt -1];
    cell_new = row_new.cells[cell_crnt +1];
    $(cell_new).removeClass('hidden');
    getclass(cell_new);
};
if(row_crnt!=15 && cell_crnt!=0) {
    row_new=miinakentta.rows[row_crnt +1];
    cell_new = row_new.cells[cell_crnt -1];
    $(cell_new).removeClass('hidden');
    getclass(cell_new);
};
};

function revealmore() { //makes all 'empty' tiles to reveal the content around it
var toreveal = $(".0:not(.hidden)");
if (toreveal.length != 0) {
    $(toreveal).each(function() { 
        getclass($(this));
        reveal($(this));
    });
setTimeout(revealmore,25);
};
toreveal = null;
};

我尝试将'reveal'和'revealmore'函数结合起来,但它根本没有成功,并导致更大的延迟。

我应该怎么做才能减少用户遭受的延迟?

谢谢你的好处!

PS 因为我只是在练习我的 js/jquery 技能,所以扫雷只能在 Chrome 和 1080p 左右的分辨率上运行良好 :)

4

0 回答 0