speed定义那两条代码为什么不能写在计时器外面?我试过效果不一样,但我觉得表达意思一样啊?求大神解惑

来源:4-1 JS多物体动画

qq_空之岚_0

2016-12-03 08:42

function startMove(obj,iTarget){

var speed=(iTarget-obj.offsetWidth)/10;

speed=speed>0?Math.ceil(speed):Math.floor(speed);

clearInterval(obj.timer);

obj.timer=setInterval(function(){

//var speed=(iTarget-obj.offsetWidth)/10;

//speed=speed>0?Math.ceil(speed):Math.floor(speed);

if(obj.offsetWidth==iTarget){

clearInterval(obj.timer);

}else{

obj.style.width=obj.offsetWidth+speed+"px"

}

},30);

}


写回答 关注

2回答

  • 慕粉3126759
    2016-12-04 00:09:20
    已采纳

    你写在外面只是在start的时候对spend更新了一次,计时器运行时速度不再更新,所以整个过程中速度其实是恒定的,而写在计时器内部,则是每30ms更新一下速度,使速度减慢,这样才达到了缓冲的效果。

    qq_空之岚...

    非常感谢!

    2016-12-04 07:11:27

    共 1 条回复 >

  • 小_c
    2016-12-03 15:41:17

    举个例子吧,比如说赛跑吧,老师喊预备跑的时候,你才开始跑对吧,然后这个时间已经在走了,但是是先开始你才跑的,所以这个也一样,是计时在前

JS动画效果

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

113924 学习 · 1443 问题

查看课程

相似问题