zoukankan      html  css  js  c++  java
  • 缓动函数requestAnimationFrame用法

    代码

     // shim layer with setTimeout fallback
    window.requestAnimFrame = (function(){
      return  window.requestAnimationFrame ||
        window.webkitRequestAnimationFrame ||
     

       window.mozRequestAnimationFrame ||
        window.oRequestAnimationFrame ||
        window.msRequestAnimationFrame ||
        function(/* function FrameRequestCallback */ callback, /* DOMElement Element */ element){
        window.setTimeout(callback, 1000 / 60);
      };


    })();

    具体这是什么 有什么好处 请找度娘 大致就是无限setTimeout 的递归套

    我只做个简单的demo

    <!DOCTYPE html>
    <html>
    <meta charset="utf-8" content="text/html">
    <head>
        <title></title>
    </head>
    <body>
        <div id="div1" style=" 100px; height: 100px; background: red; color:#fff ;position: absolute; left: 0; top: 0;">
            
            点我停下来
        </div>
    
    
    <script type="text/javascript">
             // shim layer with setTimeout fallback
    window.requestAnimFrame = (function(){
            return  window.requestAnimationFrame ||
              window.webkitRequestAnimationFrame ||
              window.mozRequestAnimationFrame ||
              window.oRequestAnimationFrame ||
              window.msRequestAnimationFrame ||
              function(/* function FrameRequestCallback */ callback, /* DOMElement Element */ element){
              window.setTimeout(callback, 1000 / 60);
            };
    })();
    
    var Animate=false;
    
    var x=0;
    
    //普通递归
        // feiris();
        // function feiris(){
        //                 if(Animate){return false;}
        //                 x++;
        //                 document.getElementById("div1").style.left=x+"px";
                        
        //                 setTimeout(function(){
                                                    
        //                         feiris();
                             
        //                 },16);
        // };
    //利用缓动
     function autoMove() {
         x++;
         document.getElementById("div1").style.left=x+"px";
    }
    
    (function animloop(){
         autoMove();
         if(!Animate){requestAnimFrame(animloop);}//elem没有用
    })();
    document.getElementById("div1").onclick=function(){
                
                 Animate=true;
                
    }
    
    </script>
    </body>
    
    </html>

     然后各位可以chrome对比性能


    本文为博主原创文章,转载请注明出自 博客园蓝波大人 并保留本文有效链接 ,转载请保留本声明!谢谢

  • 相关阅读:
    Android ViewPager使用详解
    Android开发 侧边滑动菜单栏SlidingMenu结合Fragment
    ArrayList
    Gstreamer中加入�x265编解码器
    python fabric实现远程操作和部署
    java.text.NumberFormat使用方法
    Delphi 2007体验!
    Codeforces 360C Levko and Strings dp
    FindWindow使用方法
    C++ Primer 学习笔记_87_用于大型程序的工具 --异常处理
  • 原文地址:https://www.cnblogs.com/lanbosm/p/5343350.html
Copyright © 2011-2022 走看看