为什么把速度放在外面就不行呢?每次每个对象startmove方法调用时应该会重新获取速度值才对晒

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

善良阿呆

2016-08-10 20:25

function startmove(obj,itarget){

clearInterval(obj.timer);

var speed=(itarget-obj.offsetWidth)/5;

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

obj.timer=setInterval(function(){

if(obj.offsetWidth==itarget){

clearInterval(obj.timer);

}

else{ 

obj.style.width=obj.offsetWidth+speed+'px';

}

},30)



写回答 关注

2回答

  • 大块吃肉188
    2016-08-31 10:18:53

    要放在定时器的函数里面setInterval(function(){ speed部分  },30),定时器是每隔30ms执行一次function(){}函数。如果你把speed部分放在定时器要调用的函数之外,那么只在触发onmouseover的时候计算speed一次,以后每次定时器内部函数被调用的时候不会再计算speed,所以还是不行,这样讲不知道你明白了么

  • 一只钱端攻城狮
    2016-08-10 21:22:15

    你的obj和itarget是在函数里面定义的,speed放到外面肯定不行啊,而且js是脚本语言,按顺序执行

    善良阿呆

    我是放在startmove函数里面,没有放在定时器函数里面,每次对象触发startmove函数时那speed也会重新赋值到当前对象啊,我这儿始终没有转过弯呢???

    2016-08-10 21:34:07

    共 1 条回复 >

JS动画效果

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

113923 学习 · 1443 问题

查看课程

相似问题