2

编辑*

在我的文字游戏中,我添加了一个重新启动按钮。目前的问题是,当我按下它时,它会回到开始屏幕,就像它应该的那样。但是当第二次点击开始按钮时,它会带回之前已经玩过的游戏。我现在已将所有代码放入单独的函数中,以便我可以再次为新游戏运行它们。问题是我不知道如何清除最后一场比赛才能重新开始。单击此按钮时如何重新启动所有功能?

我有功能..

createGrid()
startplay()
restartplay()
keyPress()
backGroundSound()
dragEvent()
nextQuestion()
closeMessage()
replaySound()
backGroundImage()

我在 document.ready 函数中运行它们

$(document).ready(function () {

backGroundSound();
createGrid();
keyPress();
backGroundImage();
playBackGroundSound();
dragEvent();

$('.next-question').on('click', function () {
    nextQuestion();
});
$('.close-message').one("click", function () {
    closeMessage();
});
$(".replay-sound").click(function () {
    replaySound();
});
//Click event to start the game
$(".start-btn-wrapper").click(function () {
    startplay();
});
//Click event to restart the game
$(".restart-btn").click(function () {
    restartplay();
});     

单击重新启动按钮时,我希望它刷新功能,然后再次单击开始按钮时,为用户开始新游戏。如果不刷新页面,我将如何做到这一点?

我想在单击重新启动按钮时清除功能,然后在单击开始按钮时再次启动它们。

这个小提琴只有脚本:http: //jsfiddle.net/V4SYZ/

4

2 回答 2

1

您可能只需要清除存储上次游戏数据的任何数据结构。例如,如果它在一个数组中,则将其重置为一个空数组,data = []或者如果在一个对象中是一个空对象data = {},等等。它是如果不了解代码的结构及其工作原理,很难更具体。

编辑

查看您在该小提琴中发布的代码,就在您$.ready()将一堆变量初始化为空数组的事件中调用所有这些函数之前;我没有仔细查看代码,但您可能需要再次执行此操作才能开始您的新游戏。

正如我之前建议的那样,我会将该代码移动到一个新函数中:

Function newGame() {
    randomWord = [];
    listOfWords = [];
    attemptNumber = [];
    completionNumber = [];
    populationNumber = [];
    gridSize = [];

    backGroundSound();
    createGrid();
    keyPress();
    backGroundImage();
    playBackGroundSound();
    dragEvent();
}

然后newGame()$.ready()处理程序和点击处理程序中调用函数.restart-btn

$(document).ready(function () {

    newGame();

    $('.next-question').on('click', function () {
            nextQuestion();
    });
    $('.close-message').one("click", function () {
            closeMessage();
    });
    $(".replay-sound").click(function () {
            replaySound();
    });
    //Click event to start the game
    $(".start-btn-wrapper").click(function () {
            startplay();
    });

    //Click event to restart the game
    $(".restart-btn").click(function () {
            newGame();
            restartplay();
    });     

});
于 2012-11-26T09:32:30.560 回答
0

总是可以做一个非缓存的重新加载,像这样:

window.location.reload(true);

这告诉浏览器重新加载页面并明确使用内存中的任何内容(基本上,与Cntrl+F5Windows 机器上的 a 相同)。不过,这假设您不需要在当前“会话”中保留任何内容。

于 2012-11-26T09:17:42.163 回答