zoukankan      html  css  js  c++  java
  • js运动基础之缓冲运动

    单属性缓冲运动
     1     /**
     2      * 单属性缓冲运动
     3      */
     4     function fnSingleBufferMove(oDom, sAttr, iTarget, fn){
     5         var iSpeed, iCur;
     6         clearInterval(oDom.timer);
     7         oDom.timer = setInterval(function(){
     8             // 计算当前值
     9             if(sAttr == 'opacity'){
    10                 iCur = Math.round(fnGetStyle(oDom, sAttr) * 100);
    11             }else{
    12                 iCur = parseInt(fnGetStyle(oDom, sAttr));
    13             }
    14 
    15             // 计算速度
    16             iSpeed = (iTarget - iCur) / 8;
    17             iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); // 速度取整(浏览器会对样式的小数部分进行四舍五入,导致不能达到终点)
    18 
    19             // 运动停止
    20             if(iCur == iTarget){
    21                 clearInterval(oDom.timer);
    22                 fn && fn();
    23             }else{
    24                 if(sAttr == 'opacity'){
    25                     oDom.style.opacity = (iCur + iSpeed) / 100;
    26                     oDom.style.filter = 'alpha(opacity: ' + (iCur + iSpeed) + ')';
    27                 }else{
    28                     oDom.style[sAttr] = iCur + iSpeed + 'px';
    29                 }
    30             }
    31         }, 30);
    32     }
    多属性缓冲运动
     1     /**
     2      * 多属性缓冲运动
     3      */
     4     function fnMultiBufferMove(oDom, json, fn){
     5         var iSpeed, iCur, bStop;
     6         clearInterval(oDom.timer);
     7         oDom.timer = setInterval(function(){
     8             bStop = true;
     9             for(var sAttr in json){
    10                 // 计算当前值
    11                 if(sAttr == 'opacity'){
    12                     iCur = Math.round(fnGetStyle(oDom, sAttr) * 100);
    13                 }else{
    14                     iCur = parseInt(fnGetStyle(oDom, sAttr));
    15                 }
    16 
    17                 // 计算速度
    18                 iSpeed = (json[sAttr] - iCur) / 8;
    19                 iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); // 速度取整(浏览器会对样式的小数部分进行四舍五入,导致不能达到终点)
    20 
    21                 // 运动
    22                 if(iCur != json[sAttr]){
    23                     bStop = false;
    24                     if(sAttr == 'opacity'){
    25                         oDom.style.opacity = (iCur + iSpeed) / 100;
    26                         oDom.style.filter = 'alpha(opacity: ' + (iCur + iSpeed) + ')';
    27                     }else{
    28                         oDom.style[sAttr] = iCur + iSpeed + 'px';
    29                     }
    30                 }
    31             }
    32 
    33             // 运动停止
    34             if(bStop){
    35                 clearInterval(oDom.timer);
    36                 fn && fn();
    37             }
    38         }, 30);
    39     }
  • 相关阅读:
    python threading 无法并行问题
    flask
    jinjia2 模板不解析html
    docker 配置lnmp环境(mac环境下)
    docker基础
    django初体验
    Centos6.5 编译安装Mysql 5.5.3.7
    Mysql InnoDB事务
    删除GitHub上项目中的某个文件
    转 WPF MVVM 循序渐进 (从基础到高级)
  • 原文地址:https://www.cnblogs.com/tyxloveyfq/p/4300674.html
Copyright © 2011-2022 走看看