问答详情
源自:6-2 完美运动框架

关于flag问题

不知道大家有没有遇到,如果像老师写的flag就是一开始给个初始值为true,在循环里却没有去设置flag = true,导致定时器没有关闭,因为flag在循环后就一直为false,在这种情况下,同时运动居然能够完美的运行成功,单身链式动画却失效了。但是如果在for(var attr in json)里添加 

if( icur != json[attr]){ 

        flag = false;

}else{

    flag = true;

}此时定时器可以关闭了,链式动画也可以执行,但是同时运动却无法达到效果了,请问有人知道解决办法吗???!!

提问者:MIS_Lu 2015-08-21 22:58

个回答

  • Archur_22
    2015-09-05 18:45:17
    已采纳

    嗯 上面代码确实对着 主要是老师将flag的定义写错位置了

  • topband
    2015-09-05 12:04:18

    每隔30毫秒,在计时器里面都会先将flag值设置为真,然后再去遍历时候还有未到达itarget的属性,如果都完成。flag就还是真,终止计时器。。。结束战斗。

  • MIS_Lu
    2015-09-04 15:00:31

    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);//Math.round四舍五入取整目的是为了解决计算机存储小数不精确问题

    }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';

    };

    }


    }

    if (flag == true) {

    clearInterval(obj.timer);

    if (fn) {

    fn();

    };

    };

    },30);


    }



  • marshall_stan
    2015-08-26 13:35:38

    我也疑惑,这个flag经过遍历后就一直为false了啊!!!