我正在尝试调用一个函数,该函数在运行时清除timeOut(以停止动画循环)。这是我目前正在尝试的方法:

function gameStop(){
  clearTimeout(gameLoop);
}

function gameLoop() {
  $('h1').show("slow")
           .animate({"marginLeft":"300px"},4000)
            .animate({"marginLeft":"0px"},4000);
 $('h1').click(function(){
   gameStop();
 });
 gameLoop();
}

 setTimeout(gameLoop, 4000);

 gameLoop();

最佳答案

哇,老实说,这看起来很混乱。
首先,您不想在每个游戏循环中添加点击事件,因此请将其放置在游戏循环之外。
第二:清除超时无法像这样工作。
通常,使用相同名称的功能会很糟糕...

尝试这样的事情(不知道代码是否有效或您的循环是否有意义,但这实际上是您想要的)。


var timeOut = null;

$('h1').click(function(){
clearTimeout(timeOut);
});

function gameLoop(){
$('h1').show("slow")
    .animate({"marginLeft":"300px"},4000)
    .animate({"marginLeft":"0px"},4000);
};
timeOut = setTimeout(gameLoop, 4000);

10-06 07:55