【代碼】完美運動框架

//運動框架(完美版)


//獲取非行間樣式
function getStyle(obj, name) {
    if(obj.currentStyle) {
        return obj.currentStyle[name];
    } else {
        return getComputedStyle(obj,false)[name];
    }
}

// startMove(oDiv, {'width':'300', height:400})
function startMove(obj, json, fnEnd) {
//清除定時器   
    clearInterval(obj.timer);

//設置定時器
    obj.timer = setInterval(function() {

        var flag = true;  //放一個變量,假設:所有值都已經到了

        //遍歷json裏面的數據組       
        for(var attr in json) {
            //獲取需要變換的屬性的值
            var cur = 0;
            if(attr == 'opacity') {
                cur = Math.round(parseFloat(getStyle(obj,attr))*100);
            } else {
                cur = parseInt(getStyle(obj,attr));
            }

            //設定運動速度
            var speed = (json[attr]-cur)/10;
            speed=speed>0?Math.ceil(speed):Math.floor(speed);

            //運動

            if(cur != json[attr])
                flag = false;

                if(attr == 'opacity') {
                    obj.style.filter = 'alpha(opacity:'+(cur+speed)+')';
                    obj.style.opacity = (cur+speed)/100;
                } else {
                    obj.style[attr] = (cur+speed)+'px';
                }           
        }

        if(flag) {
            clearInterval(obj.timer);
            if(fnEnd) fnEnd();
        }

    }, 30);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章