zoukankan      html  css  js  c++  java
  • 缓存动画4-回调

     1  <script>
     2        window.addEventListener('load', function (ev) {
     3            var box = myTool.$('box');
     4 
     5            myTool.$('btn').addEventListener('click', function () {
     6                buffer(box, { 'left': 900, 'top': 500, 'width': 600, 'height': 400}, function () {
     7                    buffer(box, { 'left': 100, 'top': 100, 'width': 50, 'height': 50}, function () {
     8                        buffer(box, { 'left': 600, 'top': 500, 'width': 300, 'height': 400}, null)
     9                    });
    10                });
    11            });
    12        });
    13 
    14        /**
    15         *  缓动动画函数
    16         * @param {Object}eleObj
    17         * @param {Object}json
    18         * @param {Function}fn
    19         */
    20        function buffer(eleObj, json, fn) {
    21            // 1.1 先清后设
    22            clearInterval(eleObj.timer);
    23 
    24            // 1.2 定义变量
    25            var speed = 0, begin = 0, target = 0, flag = false;
    26 
    27            // 1.3 设置定时器
    28            eleObj.timer = setInterval(function () {
    29                // 标志 (标签的所有属性有没有执行完动画)
    30                flag = true;
    31                for(var key in json){
    32                    // 获取要做动画属性的初始值
    33                    begin = parseInt(myTool.getStyleAttr(eleObj, key)) || 0;
    34                    target = parseInt(json[key]);
    35                    console.log('begin:' + begin);
    36 
    37                    // 2.3 求出步长
    38                    speed = (target - begin) * 0.2;
    39                    speed = (target > begin) ? Math.ceil(speed) : Math.floor(speed);
    40 
    41                    // 2.4  动起来
    42                    eleObj.style[key] = begin + speed + 'px';
    43 
    44                    // 2.5 判断
    45                    if (begin !== target) {
    46                        flag = false;
    47                    }
    48                }
    49 
    50                // 1.4 清除定时器
    51                if(flag){
    52                    clearInterval(eleObj.timer);   //解决了只要一个值满足就可以的情况
    53                    // 开启另一组动画
    54                   /* if(fn){
    55                        fn();
    56                    }*/
    57                   fn && fn();
    58                }
    59            }, 40);
    60        }
    61    </script>
  • 相关阅读:
    逆元(费马小定理求法)
    CodeForces
    lower_bound and upper_bound
    HDU 4825 Xor Sum
    1030: [JSOI2007]文本生成器
    1070: [SCOI2007]修车
    agc 027 B
    P2664 树上游戏
    CF 314 E. Sereja and Squares
    4237: 稻草人
  • 原文地址:https://www.cnblogs.com/zhangzhengyang/p/11217280.html
Copyright © 2011-2022 走看看