1.flag要放在setInterval回调函数外面声明并初始化为false
2.在setInterval回调函数开头判断flag,false表示动画没有执行完,true表示动画执行完毕需要关闭定时器
3.如果动画没有执行完,则在for..in..循环外将flag置为true,并在循环中分别判断每个动画是否完毕,完毕则不做任何动作,未完毕则执行动画并将flag置为false
2.在setInterval回调函数开头判断flag,false表示动画没有执行完,true表示动画执行完毕需要关闭定时器
3.如果动画没有执行完,则在for..in..循环外将flag置为true,并在循环中分别判断每个动画是否完毕,完毕则不做任何动作,未完毕则执行动画并将flag置为false
2018-01-03
1判断界限的时候如果是==的话,假如运动速度不是整数或者换成不能被界限值整除的数,会一直运动下去,造成边界判断失效,所以判断界限时要用>=或者<=,所以mouseover和mouseout的时候两个函数不能如此简单的整合,加上边界判断,可能还没有分开写简单;2.考虑到事件冒泡,建议用mouseenter和mouseleave.
2018-01-02
最赞回答 / 伴山客
终于想通了,还是flag的问题。大家注意,var flag =true;这句话一定一定要放在for-in外面理解如下:首先for-in虽然使得看起来是同步进行,但实际还是你定义的运动1,运动2,运动3 顺序操作。当放在外面的时候,三个运动是修改一个flag,有一个没满足都是false。而当flag定义放在循环里的时候,每一个运动的每一次操作,都会重置flag为true。模拟一下:假定速度为1.首先第一圈。宽是false,然运动,达到目标。高是false,运动,仍未达到。透明度是false,运动,仍未达到。...
2017-12-20
clearInterval(timer)其他的都明白,唯独这个不明白 刚刚进入startmove()函数,这个的作用和效果不太明白
2017-12-16