定时器,动画,步长的计算方法,回调函数的应用

395 阅读1分钟

动画:通过使用定时器把一次执行完的动作分成多次执行,达到一个动画的效果

延迟定时器settimeout

a.settimeout(function(){ console.log("这是一个定时器,一秒以后触发") },1000) //里面有两个参数,第一个参数放执行函数,第二个参数放延迟多长时间执行这个定时器,单位1000=1s;

定时器setInterval

a.timer=setInterval(function(){ console.log("这是一个定时器,每隔30毫秒触发一次");
},30) //里面有两个参数,第一个参数放执行函数,第二个参数是每隔多长时间执行一次;

定时器的注意事项

1.在使用定时器的时候一定要加上 clearInterval(timer);清除掉原有的定时器,不然就造成在定时器还未执行完成的时候,又重复调用,会出现效果错乱!

非匀速运动动画,以及步长的计算方法

1.步长是会慢慢变小,直到慢慢趋近0;

 function animate(obj,target){
        clearInterval(obj.timer);
        obj.timer=setInterval(function(){
           //步长开始大,慢慢变小
           //(target-obj.offsetleft)/10
           //offsetleft=0; target=500;  500/10=50;
           //offsetleft=50;target=500; 450/10=45;
           //offsetleft=95;target=500; 405/10=40.5;
           //letf=obj.offsetlet+(target-obj.offsetleft)/10;
           var step=(target-obj.offsetLeft)/10;
           if(obj.offsetLeft==target){
               clearInterval(obj.timer);
           }
           obj.style.left=obj.offsetLeft+step+"px";
        },30)
    }
    animate(box,600);

回调函数

<script>
    //回调函数,回头再调用的函数
    // var btn=
    // //这个函数就是回调函数
    //  btn.onclick=function(){
    
    //  }
    //fn相当于function(){
         //console.log("这是一个回调函数,2s后进行调用")
     //}
       function demo(fn){
           setTimeout(function(){
             fn()
           },2000)
       }
     demo(function(){
         console.log("这是一个回调函数,2s后进行调用")
     })
</script>