Javascript设置/ clearInterval辅助

时间:2014-04-26 13:13:08

标签: javascript jquery html5 html5-canvas


对于那些决定回答这个问题的人,我突然碰到了一个小问题 我试图做以下事情:

创建

var intrvl; //for interval
function strt() {
     //and set interval
     intrvl = setInterval(writeT,3000);
}
function writeT() {
     //do something here as the interval runs
     checkIf(); //check for the mouse down
}
function checkIf() {
     //here goes the code that checks if mouse is down and if it is
     //then I call another function that begins other useful process
     //I tried
     if (c.addEventListener('click')) { //c is my canvas
          clearInterval(intrvl); //guess clearing the interval yee?
          //and then calling the function I want to call
          startDoing();
     }
}

我想等待并使用该间隔,直到有人点击画布然后运行所需的功能 但是每当我点击画布时,函数startDoing()恰好在运行,但与没有完全运行它的速度相比,它太快了。
我怎样才能让它发挥作用?正如我所希望的那样,首先创建的区间不存在,只有startDoing()运行。

1 个答案:

答案 0 :(得分:1)

您误解了addEventListener()的使用。

checkIf()中的条件立即返回。因此,您的代码是

  1. 在调用strt()
  2. 时启动间隔计时器
  3. 在第一次出现间隔计时器时添加点击处理程序
  4. 但它也会立即停止间隔时间并随后调用startDoing()
  5. 改为使用它:

    var intrvl;
    var clicked = false;
    
    function strt() {
         //and set interval
         intrvl = setInterval(checkIf,3000);
    }
    
    function checkIf() {
        if ( clicked ) {
            clearInterval( intrvl );
            startDoing();
        }
    }
    
    c.addEventListener('click', function() {
        clicked = true;
    } );
    

    此代码即刻注册点击处理程序。一旦调用strt(),它就是启动间隔计时器。单击鼠标后,单击的变量将设置为true以标记此事件。下次你的间隔计时器触发时,由于检查了该变量并开始你想要启动的任何内容,它正在识别前一次点击。