Javascript 在我的游戏中单击停止按钮不会按预期停止游戏

Javascript 在我的游戏中单击停止按钮不会按预期停止游戏,javascript,Javascript,当游戏结束时,它会弹出一个按钮再次播放,如果你点击该按钮,它会将你重定向到播放按钮 如果单击“播放”,游戏应该开始,但问题是游戏结束时,它会弹出第一个框,其中有“再次播放”按钮,我单击它,游戏将重定向到“播放”按钮,在我单击“播放”按钮之前,游戏将开始,即使我没有单击“播放”按钮 我再次调用PLAY_按钮中的函数eggStop()来停止游戏,但游戏没有停止。我在gameOver()函数中调用了相同的函数,它只在gameOver()中起作用 如果有关于编写代码以增强它的建议,将不胜感激 这里是图像

当游戏结束时,它会弹出一个按钮再次播放,如果你点击该按钮,它会将你重定向到播放按钮

如果单击“播放”,游戏应该开始,但问题是游戏结束时,它会弹出第一个框,其中有“再次播放”按钮,我单击它,游戏将重定向到“播放”按钮,在我单击“播放”按钮之前,游戏将开始,即使我没有单击“播放”按钮

我再次调用PLAY_按钮中的函数eggStop()来停止游戏,但游戏没有停止。我在gameOver()函数中调用了相同的函数,它只在gameOver()中起作用

如果有关于编写代码以增强它的建议,将不胜感激

这里是图像文件

var egg1=document.getElementById(“egg1”);
var egg2=document.getElementById(“egg2”);
var egg3=document.getElementById(“egg3”);
var-pos1=0;
var-pos2=0;
var-pos3=0;
var basket=document.getElementById(“basket”);
变量Y_Pos=0;
var X_Pos=0;
var得分=0;
var寿命=10;
var SCORE1=document.getElementById(“分数”);
var LIFE1=document.getElementById(“LIFE”);
var-speed1=0;
var speed2=0;
var-speed3=0;
var PLAY_Div=document.getElementById(“PLAY Div”);
var PLAY_reach=document.getElementById(“再次播放”);
var caption_Score=document.getElementById(“caption Score”);
var Play_Btn=document.getElementById(“Play Btn”);
var Home1=document.getElementById(“Home”);
var basketScore=document.getElementById(“basketScore”);
var basket_div=document.getElementById(“basket div”);
var L=“”
var S=“”
文档.添加的事件列表器(“mousemove”,函数(e){
basket_div.style.left=e.clientX;
Y_Pos=e.clientY;
X_Pos=e.clientX;
控制台日志(“X_位置”+X_位置);
控制台日志(“Y_位置”+Y_位置);
})
函数eggMove(){
pos1=pos1+speed1+30;
egg1.style.top=pos1+“px”;
console.log(“Pos1”+Pos1);
pos2=pos2+speed2+30
egg2.style.top=pos2;
pos3=pos3+speed3+30;
egg3.style.top=pos3+“px”;
地板聚合();
}
函数eggStop(){
pos1=30;
egg1.style.top=pos1+“px”;
位置2=30
egg2.style.top=pos2+“px”;
pos3=30;
egg3.style.top=pos3+“px”;
}
再次播放。添加EventListener(“单击”,函数(){
eggStop();/*它不起作用,它无法停止游戏/鸡蛋*/
PLAY_Div.style.display=“无”;
Home1.style.display=“块”;
寿命=10;
速度1=0;
速度2=0;
速度3=0;
得分=0;
})
Play_Btn.addEventListener(“单击”,函数(){
设定间隔(eggMove,500);
Home1.style.display=“无”;
寿命=10;
速度1=0;
速度2=0;
速度3=0;
得分=0;
})
功能gameOver(寿命){
如果(寿命=470){
如果(120
快乐蛋
再玩一次
得分0
生活10
0

您遇到的问题是没有停止运行间隔,因此它会继续运行

eggStop
重置位置,但移动功能一直被调用

要解决这个问题,您需要引入一个全局变量来跟踪间隔,并在
eggStop
中取消它

将此变量与其他全局变量放在一起

var intervalID = 0;
然后在添加到
播放\u Btn
的事件处理程序中,单击:

intervalID = setInterval(eggMove, 500);
然后在
eggStop
中添加:

clearInterval(intervalID);

top
还需要值中的单位,一个空的数字没有任何作用。我给你做了一个片段,试图清理你的描述。控制台中有错误请回答,我添加了egg1.style.top=pos1+“px”;但游戏仍然没有停止。谢谢你,它正在工作,我想setInterval()如果我不再次调用函数,它将被停止。我还有一个问题,如果你能看到我正在减少寿命-0.5,因为如果我减少它的寿命--=>它将减少2个寿命而不是1个,但我不知道原因。我不是100%确定。每一个鸡蛋落地,你会损失0.5个生命,每轮总共1.5个。没有储备然后,间隔的调整
eggMove
被称为每个间隔n次,其中n是在不刷新页面的情况下玩游戏的次数。这意味着每个
floorCollision
被称为n次,这意味着每个鸡蛋将损失n*0.5条生命。根据上述解决方案,每个楼层将损失1.5条生命floorCollision中的if条件将为一个鸡蛋损失2条生命,但我不知道为什么虽然我刚刚编写了Life=Life-1;,但我不知道为什么它是双重的。我发现了问题并解决了它,问题在setTimeout中(函数(){pos1=45;应该在这个函数之外})