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对比性能


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

  • 相关阅读:
    ruby
    Ajax的基本请求/响应模型
    面向GC的Java编程(转)
    linux中fork()函数详解(转)
    详细解析Java中抽象类和接口的区别(转)
    MQ队列堆积太长,消费不过来怎么办(转)
    消息队列软件产品大比拼(转)
    mac地址和ip地址要同时存在么?
    DP刷题记录(持续更新)
    ZR979B. 【十联测 Day 9】唯一睿酱
  • 原文地址:https://www.cnblogs.com/lanbosm/p/5343350.html
Copyright © 2011-2022 走看看