JS高级运动实例分析

前端之家收集整理的这篇文章主要介绍了JS高级运动实例分析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例分析了JS高级运动。分享给大家供大家参考,具体如下:

一、链式运动框架

1.他需要一个回调函数,在运动停止时,开始下一次运动(执行函数

多物体运动框架改为如下:

然后就可以用它,比如先变宽再变高最后变透明度

二、完美运动框架

1.原本多物体运动框架的缺陷

比如要让他宽度高度同时变300,这样写:

问题:只有高度变300了(因为宽度准备运动时会开一个定时器,这个定时器还没开始运动前,执行高度变化的运动,就把之前的定时器关了)

2.for in

for(i=0;i<=arr.length;i++)和for(i in arr)效果一样

①什么时候用for什么时候用for...in呢?

数组:两个都可以用 Json:只能用for...in(因为Json下标没有规律,没有length可言)

对数组而言for...in循环不灵活,因为for循环可以从1可以从2等等任意数字开始,而for...in一循环就全部

②for in小应用

=====>

③多物体运动框架改进

0?Math.ceil(iSpeed):Math.floor(iSpeed); if(iCur==json[attr]){ clearInterval(obj.timer); if(fn){ fn(); //有传函数这个参数才执行,不然会出错 } } else{ if(attr=='opacity'){ obj.style.filter='alpha(opacity:'+(iCur+iSpeed)+')'; obj.style.opacity=(iCur+iSpeed)/100; } else{ obj.style[attr]=iCur+iSpeed+'px' } } } },30); };

这样还有个问题

只要json里有任一值到达目标,计时器就停止

比如我让宽度变到103,高度变到300,那高度到不了300就停止了

解决方

0?Math.ceil(iSpeed):Math.floor(iSpeed); if(iCur!=json[attr]){ bStop=false; //并不是所有值都到了,就把bStop设成 false } if(attr=='opacity'){ obj.style.filter='alpha(opacity:'+(iCur+iSpeed)+')'; obj.style.opacity=(iCur+iSpeed)/100; } else{ obj.style[attr]=iCur+iSpeed+'px' } } if(bStop){ //所有值都到了,关闭定时器 clearInterval(obj.timer); if(fn){ fn(); //有传函数这个参数才执行,不然会出错 } } },30); };

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《

希望本文所述对大家JavaScript程序设计有所帮助。

原文链接:https://www.f2er.com/js/43362.html

猜你在找的JavaScript相关文章