2015年11月27日

javascript

json json循环用for in的方式。

var json={a:12,b=15};
for(var i in json){
    alert(a+'='+json[i])
}

完美运动框架

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


function startMove(obj, json, fnEnd)
{
    clearInterval(obj.timer);
    obj.timer=setInterval(function (){
        var bStop=true;     //假设:所有值都已经到了

        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)/6;
            speed=speed>0?Math.ceil(speed):Math.floor(speed);

            if(cur!=json[attr])
                bStop=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(bStop)
        {
            clearInterval(obj.timer);

            if(fnEnd)fnEnd();
        }
    }, 30);
}

运动框架演变过程

  • startMove(iTarget) 运动框架

  • startMove(obj,iTarget) 多物体

  • startMove(obj,attr,iTarget) 任意值

  • startMove(obj,attr,iTarget,fn) 链式运动

  • startMove(obj,json) 多值运动

  • startMove(obj,json,fn) 完美运动框架

Last updated