在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

完美运动框架中move.js文件里面没有定义一个变量obj.timer,为什么调用star

function getStyle(obj,attr){
        if(obj.currentStyle){
                return obj.currentStyle[attr];
        }else{
                return getComputedStyle(obj,false)[attr];
        }
}


function startMove(obj,json,fn){
        clearInterval(obj.timer);     //为什么这里能直接清除定时器???
        obj.timer = setInterval(function(){
                var flag = true;
                for (var attr in json){
                        //1.取当前的值
                        var icur = 0;
                        if (attr == 'opacity'){
                                icur = Math.round(parseFloat(getStyle(obj,attr))*100);
                        }else{
                                icur = parseInt(getStyle(obj,attr));
                        }
                        //2.算速度
                        var speed = (json[attr] - icur)/8;
                        speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
                        //3.检测是否全部完成
                        if (icur != json[attr]){
                                flag = false;
                        }
                        if (attr == 'opacity'){
                                obj.style.filter = 'alpha(opacity:' + (icur + speed) + ')';
                                obj.style.opacity = (icur + speed)/100;
                        }else{
                                obj.style[attr] = icur + speed + 'px';
                        }
                       
                }
                //4.检测停止
                if(flag){
                        clearInterval(obj.timer);
                        if (fn){
                                fn();
                        }
                }
        },30);
}

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

那是给obj这个对象定义了一个方法,第一次运行,obj.timer=undefined, 清除undefined并不会报错,第二次运行obj.timer就是一个方法,然后就先可以清除这个方法了,防止出现多个定时器。

使用道具 举报

发新帖
国内首家创新型IT技术需求众包服务平台,软件需求就上天盟网! 立即登录 立即注册