关于flag问题

来源:6-2 完美运动框架

MIS_Lu

2015-08-21 22:58

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

if( icur != json[attr]){ 

        flag = false;

}else{

    flag = true;

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

写回答 关注

4回答

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

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

    MIS_Lu

    非常感谢!

    2015-11-10 13:53:59

    共 1 条回复 >

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

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

    hey自然

    哪个操作将flag置true了呢?当window.onload加载后,按照老师的逻辑写法,第一次是声明置真,但是之后一直我们一直是在执行startMove里的计时器这个操作呀~计时器不可能去将flag置真。所以 var flag = true;声明这个变量应该像楼上这样放在计时器里。这样从逻辑上,从结果上都是可行的!

    2015-09-10 18:47:49

    共 1 条回复 >

  • 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);


    }



    慕后端736... 回复MIS_Lu

    感谢,说的不错!

    2016-03-17 16:11:20

    共 3 条回复 >

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

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

    MIS_Lu

    代码应该是下楼这样的,你看看

    2015-09-04 15:01:17

    共 1 条回复 >

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题