Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当“定时”时,定时器不会复位;游戏“;重新开始_Javascript_Timer_Countdown - Fatal编程技术网

Javascript 当“定时”时,定时器不会复位;游戏“;重新开始

Javascript 当“定时”时,定时器不会复位;游戏“;重新开始,javascript,timer,countdown,Javascript,Timer,Countdown,功能: 用户可以在游戏页面中玩基于时间的游戏。将有一个倒计时计时器,它将跟踪游戏持续时间,因此,当计数器=0时,它将检查并评估用户是否满足游戏条件 比赛条件如下: 1.)如果计数器等于0且速度大于20ms,则将进入下一页 否则 2.)它将导航到“Gameover”页面,用户将必须在Gameover页面上单击,然后再次导航回游戏开始页面 当用户失败游戏并重新启动游戏时,计数器将被重置,这样它将被视为一个全新的游戏 我所做的: 我已经做了,计数器,还记录了速度,它显示在游戏页面上。 其次,我还设置了

功能:

用户可以在游戏页面中玩基于时间的游戏。将有一个倒计时计时器,它将跟踪游戏持续时间,因此,当计数器=0时,它将检查并评估用户是否满足游戏条件

比赛条件如下:

1.)如果计数器等于0且速度大于20ms,则将进入下一页

否则

2.)它将导航到“Gameover”页面,用户将必须在Gameover页面上单击,然后再次导航回游戏开始页面

当用户失败游戏并重新启动游戏时,计数器将被重置,这样它将被视为一个全新的游戏

我所做的:

我已经做了,计数器,还记录了速度,它显示在游戏页面上。 其次,我还设置了条件语句来检查条件(counter==0&&speed>20),这是假设用户分别导航到正确的页面

问题: 在游戏结束后,用户能够导航到正确的页面,因此所做的条件检查是正确的。但是,对于游戏失败且必须重新启动游戏的用户,计时器不会重置为初始值;例如,计数器=10。也就是说,当上一个游戏中的计数器=0时,它仍然被设置为计数器=0,我知道这是因为我将其设置为
clearInterval(rollingInterval)
,因此它会清除计数器,速度不会重置为0.00ms,但仍会显示上一个速度

但是,我想问,当用户重新启动游戏时,我如何才能将计数器重置回计数器=10,以及重置速度=0.00ms

我已附上代码供您阅读:

函数第2页(){
$(“#第1页”).hide();
$(“#第2页”).show();
}
//div id=page2的脚本
函数main game(){
var numospin=0,
距离覆盖=0,
计数器=0,
定时器=10;
var滚动区间;
$(“#scrollerDiv”).scroll(函数(){
变量高度=$(“#scrollerDiv”).scrollTop();
对于(变量i=0;i<250;i++){
如果(高度>i*10){
如果(i>=0&&i<10){
$(“#roller”).attr(“src”,“Image/rolling#pin/rolling pin Spin00”+i+”.png”);
}
如果(i>=10&&i<100){
$(“#roller”).attr(“src”,“Image/rolling#u pin/rolling pin Spin0”+i+”.png”);
}
如果(i>=100&&i<1000){
$(“#滚柱”).attr(“src”、“Image/rolling_upin/rolling pin Spin”+i+“.png”);
$(#scrollerDiv”).scrollTop(0);
numospin++;
覆盖距离+=0.59;
控制台日志(距离覆盖);
console.log(numospin);
}
}
}
})
rollingInterval=setInterval(函数(){
计数器=计数器+1;
定时器=定时器-1;
速度=覆盖距离/计数器;
speed2dec=固定速度(2);
//document.getElementById(“speedSpan”).innerHTML=speed2dec+“
”+“ms”; $(“#speedSpan').html(speed2dec+”
ms'); //document.getElementById(“timeSpan”).innerHTML=timer+“s” $('#timeSpan').html(计时器+'s'); //Ernest_Lee 13/11/15:设置条件检查;用户满足游戏条件,前进到下一页,否则导航到“GameOver”页。 如果(计数器==10和速度>20){ 控制台日志(“计数”); 清除间隔(滚动间隔); $(“#第2页”).hide(); $(“#第3页”).show();
}如果(计数器==10&&speed尝试在“游戏结束”时重置
计数器
速度
值,则为else


}如果(计数器==10&&speed非常简单,我刷新了整个页面。因此,我是这样重置计数器和所有其他设置的:

location.reload();
以下行位于:
function RevertPage(){..}
中。因此,代码如下所示:

function RevertPage() { 
//navigate user to game page immediately.
//Refresh entire LaunchPage
location.reload();
console.log("GameFail Navigate");
} 

不!!我以前已经试过了,但它不起作用。我们还能做些什么呢?我需要查看更多的代码并尝试帮助您,这是因为错误可能不在这一部分。方法调用在文档中完成是否重要。准备好了吗?因为它只被调用一次?不,我想看看这些“…”,或者在Stackoverflow中启动快速聊天会更好。
clearInterval(rollingInterval)
是在一个抽象函数中调用的,它有自己的作用域。我认为问题在于抽象函数没有返回值,所以调用
rollingInterval=setInterval(function(){…})
不更新外部作用域中的rollingInterval。请尝试添加
return rollingInterval
@Onumenal抱歉,但您的意思是什么?我尝试添加return rollingInterval,但似乎不起作用。我尝试运行您的代码,但似乎不起作用。我认为您需要将函数调用划分为不同的函数一个名为$的函数不是很有意义,通常是为jQuery保留的。我建议通过重命名函数来重构代码,这样每个函数都有一个清晰的名称-
function RevertPage() { 
//navigate user to game page immediately.
//Refresh entire LaunchPage
location.reload();
console.log("GameFail Navigate");
}