提问:var flag=true放到timer外,回调函数不能执行。放到timer内,运动达不到目标值。

来源:6-2 完美运动框架

浅浅妈

2016-10-25 17:33

如题,

当flag定义在timer内部的时候,设定是{width:400,height:200},实际上的效果却是比这个值小,并且差值还不是固定的!此时回调函数是可以执行的!

当flag定义在timer外部,目标值可以达到,回调函数不能执行!

求大神解答!


写回答 关注

2回答

  • 猫语大师
    2016-11-16 11:02:10

    老师写的这个代码并没有真正地停止过定时器,也就是说就算运动停止了,也只是因为speed=0了,没有了运动的速度儿所以停止了运动,并不是因为调用了clearInterval(timer)。如果clearInterval(timer)被调用了,那么fn()也会被调用。按照老师这个

    if(icur!=json[attr] ){

    flag=false;

    }

    的写法,应该把flag定义在timer内,for循环外,这样才会通过clearInterval(timer)停止定时器,并且调用fn()。

    如果要把flagflag定义在timer外面,那么这个上面那个if语句应该增加一个else语句

    if(icur!=json[attr] ){//把flag放在for循环里循环,如果元素的当前值不等于目标值,flag=false

    flag=false;

    }else{//如果元素的当前值等于目标值,flag=true

    flag=true

    }


  • 浅浅妈
    2016-10-25 17:39:07

    好吧。。。我知道了,要把flag定义在timer内,for循环外。。。

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113923 学习 · 1443 问题

查看课程

相似问题