JS实现匀加速与匀减速运动的方法示例

JS实现匀加速与匀减速运动的方法示例

本文实例讲述了JS实现匀加速与匀减速运动的方法。分享给大家供大家参考,具体如下:

/* * 动画帧函数 * * */  var requestFrame=function(){  var prefixList=['webkit','moz','ms'];  var func;  for(var i=0;i<prefixList.length;i++){    func=window[prefixList[i]+"RequestAnimationFrame"];    if(func){      return function(callback){        func(callback);      }    }  }  return function(callback){    setTimeout(callback,67);  }}();/* * 匀加速运动 * * */function animate_easeIn(element,from,to,duration,callback){  var time=+new Date;  var distance=to-from;  var a=2*distance/(duration*duration); //加速度a=2x/t^2(包含方向)    var func=function(){    var time2,offsetDis,durTime;    time2=+new Date;    durTime=time2-time; //运动的时间间隔    offsetDis=Math.ceil(a*durTime*durTime/2);//X=a*t^2/2        if(duration<durTime){      element.css('left',to+'px');      callback();    }else{      element.css('left',from+offsetDis+'px');      requestFrame(func);    }  }  func();}/* * 匀减速运动 * * */function animate_easeOut(element,from,to,duration,callback){  var time=+new Date;  var distance=Math.abs(to-from);  var a=2*distance/(duration*duration); //x=a*t^2/2 求出加速度  var v0=Math.sqrt(distance*2*a); // 根据公式:2as=v^2求出初速度    var func=function(){    var time2,offsetDis,durTime,pos;    time2=+new Date;    durTime=time2-time;    offsetDis=Math.ceil(v0*durTime-a*durTime*durTime/2); //根据s=v0*t+1/2*a*t^2求出位移x    if(duration<durTime){      element.css('left',to+'px');      callback();    }else{      pos=from>to? from-offsetDis : from+offsetDis;      element.css('left',pos+'px');      requestFrame(func);    }    }    func();}

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript动画特效与技巧汇总》、《JavaScript图形绘制技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

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

tag:方法减速运动示例电脑软件js

相关内容