游戏结束后停止javascript

游戏结束后停止javascript,javascript,game-physics,Javascript,Game Physics,如何阻止游戏在后台运行。这个简单的乒乓球游戏是学校的任务。当ballX

如何阻止游戏在后台运行。这个简单的乒乓球游戏是学校的任务。当ballX<0时,它会在屏幕上显示ShowingGame。然后我想让游戏中断,或者停止。直到我能写下“点击重启游戏”

和player1Score==1时的“showingWinScreen”相同

var画布;
var canvasContext;
var ballX=300;
var-ballY=200;
var ballSpeedX=5;
var=5;
变量player1Score=0;
康斯特优胜分数=1;
var showingscreen=false;
var showingGameoverScreen=真;
var-1y=150;
恒定桨叶厚度=10;
恒桨高度=100;
window.onload=函数(){
canvas=document.getElementById(“gameCanvas”);
canvasContext=canvas.getContext(“2d”);
var framesPerSecond=30;
setInterval(函数(){
抽屉物品();
移动一切();
},1000/帧每秒);
document.addEventListener('keydown',handleKeyDown,true,);
//设置拨杆操作的功能
函数handleKeyDown(事件){
var keyCode=event.which | | event.keyCode;
开关(钥匙代码){
案例38:
叶片1y-=5;
打破
案例40:
叶片1y+=5;
打破
违约:
//不按预期键时避免使用preventDefault()
返回;
}
//按向上/向下键时不滚动窗口
event.preventDefault();
}
}
函数winningScore(){
如果(player1Score==获胜分数){
showingscreen=true;
}
}
函数ballReset(){
//ballSpeedX=-ballSpeedX;
ballX=画布宽度/2;
ballY=画布高度/2;
}
函数moveEverything(){
//鲍尔克斯反弹
ballX=ballX-ballSpeedX;
//球起始Y角
巴利=巴利+巴利;
如果(ballX<0/*600*/){
如果(球>桨)&&
球<桨叶1Y+桨叶高度){
ballSpeedX=-ballSpeedX;
}
}
如果(ballX>canvas.width/*600*/){
/*ballSpeedX=5*/
ballSpeedX=-ballSpeedX;
player1Score+=1;
winningScore();
this.removeEventListener(event.type,moveEverything);
}
如果(ballY<0/*600*/){
/*ballSpeedX=5*/
鲍尔斯皮蒂=-鲍尔斯皮蒂;
}
如果(ballY>canvas.height/*400*/){
/*ballSpeedX=5*/
鲍尔斯皮蒂=-鲍尔斯皮蒂;
}
}
//在游戏画布上绘制所有黑色。
函数drawerything(){
//下一行用黑色填充屏幕
colorRect(0,0,canvas.width,canvas.height,“黑色”);
if(ballX<0){
canvasContext.fillStyle=“白色”;
canvasContext.fillText(“GameOver”,canvas.width/2200);
返回;
}
如果(显示WinScreen){
canvasContext.fillStyle=“白色”;
如果(player1Score==获胜分数){
canvasContext.fillText(“你赢了!”,canvas.width/2200);
}
返回;
}
//下一条线划左桨
colorRect(0,桨1Y,桨厚度,桨高度,“白色”);
//下一行从函数中绘制球
彩色圆圈(ballX,ballY,10,“白色”);
canvasContext.fillText(player1Score,100100);
}
//汇总球的信息
函数颜色圆(centerX、centerY、半径、drawColor){
canvasContext.fillStyle=drawColor;
canvasContext.beginPath();
canvasContext.arc(centerX,centerY,radius,0,Math.PI*2,true);
canvasContext.fill();
}
//汇总画布信息,如;颜色和宽度/高度
函数colorRect(leftX、topY、宽度、高度、drawColor){
canvasContext.fillStyle=drawColor;
canvasContext.fillRect(leftX,topY,width,height);
}

通过调用
setInterval
调用游戏循环时,需要检索它返回的间隔ID

现在,当您知道游戏结束时,您需要使用先前检索到的游戏循环ID调用
clearInterval
来停止该游戏循环

var gameLoopInterval = setInterval(function() {
    drawEverything();
    moveEverything();
  }, 1000/framesPerSecond);

// Later on, when the game is over
clearInterval(gameLoopInterval);

您可以捕获驱动游戏循环的
setInterval
,并在不再需要运行时将其清除

// Start the game.
var gameInterval = setInterval();
// Stop the game.
clearInterval(gameInterval);

这当然与您链接到@Liam的问题有关,但在本例中,我认为Jamn Nemn对
setInterval
了解不够,无法提出这个问题。因此,我不认为这是一个重复。