问答详情
源自:3-4 动画效果

点击reset函数也调用动画的bug处理!

这个程序有BUG,当我点击SHOW的按钮当图片显现出来后赶紧在点击reset按钮,动画从新播放了,而且图片显现出来了!解决办法:可以在全局定义一个动画名称,然后在reset函数中的时候首先调用clearInterval(函数名),这样就没有以上的问题了,我试了很多遍都可以,大家可以试一试

提问者:班大师 2017-03-21 12:38

个回答

  • 慕粉_郎朗
    2017-04-16 16:26:06

    可以先定义一个变量存储定时器的状态,

    代码可以这样写:

    var state = false;
    function reset(){
        clearInterval(timer);
        inintCanvas();
        state = true;

    }

    function show(){
        var timer = setInterval(function(){
            slippingRegion.r +=20;
        draw(img,slippingRegion);
        if (slippingRegion.r>= 2*Math.max(oCanvas.width,oCanvas.height)||state) {
            clearInterval(timer);
            state = false;
        }
        },30);
        
    }


  • qq__浅唱那囙忆_03434750
    2017-04-05 23:38:43

    那是show函数情况下设置的每30毫秒增加20像素的上限没有大于设定的上限,动画还没有清除的原因