编辑*
在我的文字游戏中,我添加了一个重启按钮。目前的问题是,当我按下它时,它会回到开始屏幕,就像它应该的那样。但是当第二次点击开始按钮时,它会带回已经播放过的上一个游戏。我现在已将所有代码放入单独的函数中,以便我可以再次运行它们以用于新游戏。问题是我不知道如何清除上一场比赛以便重新开始。单击此按钮时,如何重新启动所有功能?
我有函数..
createGrid()
startplay()
restartplay()
keyPress()
backGroundSound()
dragEvent()
nextQuestion()
closeMessage()
replaySound()
backGroundImage()
我在document.ready function
中运行它们$(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();
});
单击重启按钮时,我希望它刷新功能,然后再次单击开始按钮时,为用户启动新游戏。如果不刷新页面,我该怎么做?
我想在单击重启按钮时清除功能,然后在开始按钮为clicK时再次启动它们。
这个小提琴只有脚本:http://jsfiddle.net/V4SYZ/
答案 0 :(得分: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();
});
});
答案 1 :(得分:0)
总是可以执行非缓存重新加载,如下所示:
window.location.reload(true);
告诉浏览器重新加载页面并明确不使用它在内存中的任何内容(基本上与Windows机器上的Cntrl+F5
相同)。这假设您不需要在当前的“会话”中保留任何内容。